当我尝试将一个节点推送到霍夫曼树的堆上时,出现此错误:
类型错误:“HeapNode”和“HeapNode”实例之间不支持“<”
class HuffmanCoding:
def __init__(self, path):
self.path = path
self.heap = []
self.codes = {}
self.reverse_mapping = {}
def make_heap(self, frequency):
for key in frequency:
node = HeapNode(key, frequency[key])
heapq.heappush(self.heap, node)
节点类:
class HeapNode:
def __init__(self, char, freq):
self.char = char
self.freq = freq
self.left = None
self.right = None
def __cmp__(self, other):
if(other == None):
return -1
if(not isinstance(other, HeapNode)):
return -1
return self.freq > other.freq
错误是由以下原因引起的:
heapq.heappush(self.heap, node)
最佳答案
此处程序的当前版本有效。我测试过。 https://github.com/bhrigu123/huffman-coding/blob/master/huffman.py
#Modified code here for reference
class HeapNode:
def __init__(self, char, freq):
self.char = char
self.freq = freq
self.left = None
self.right = None
# defining comparators less_than and equals
def __lt__(self, other):
return self.freq < other.freq
def __eq__(self, other):
if(other == None):
return False
if(not isinstance(other, HeapNode)):
return False
return self.freq == other.freq
关于python - 类型错误 : '<' not supported between instances of 'HeapNode' and 'HeapNode' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47912064/