def encoding(self, value): for i in range(len(value)): self.frequency_occurrence[ord(value[i])] = self.frequency_occurrence[ord(value[i])] + 1 for i in range((len(self.frequency_occurrence))): if self.frequency_occurrence[i] != 0: self.frequency_dict[chr(i)] = self.frequency_occurrence[i] for values in self.frequency_dict: self.node_info_list.append(NodeInfo(values, self.frequency_dict[values])) self.node_info_list.sort(key=lambda x: x.value) while len(self.node_info_list) > 1: temp_node_one = self.node_info_list[0] temp_node_two = self.node_info_list[1] new_temp_node_value = temp_node_one.value + temp_node_two.value new_temp_node_key = temp_node_one.key + temp_node_two.key new_temp_node = NodeInfo(new_temp_node_key, new_temp_node_value) new_temp_node.set_left_child(temp_node_one) new_temp_node.set_right_child(temp_node_two) self.node_info_list.append(new_temp_node) del (self.node_info_list[0]) del (self.node_info_list[0]) self.huffman_root_node = self.node_info_list[0] self.traverse_huffman_tree()