我正在尝试为练习建立霍夫曼树,而构建元组的代码不断告诉我,对于以下代码,我遇到了 TypeError:'list'对象不可调用:
def buildTree(mylist) :
while len(mylist) > 1 :
leastTwo = tuple(mylist[0:2]) <<<<<<<< problematic line
theRest = mylist[2:]
combFreq = leastTwo[0][0] + leastTwo[1][0]
mylist = theRest + [(combFreq,leastTwo)]
mylist.sort()
return mylist[0]
更新:输入的Mylist将是一个包含如下元组的列表:[(1,'b'),(1,'d'),(1,'g'),(2,'c '),(2,'f'),(3,'a'),(5,'e')]
一段时间以来,我一直在尝试调试,但我的解决方案均无法正常工作。我正在按照 http://www.openbookproject.net/py4fun/huffman/huffman.html 的指示进行操作,该指示与我做的事情完全相同,因此我不确定特别是对我而言哪里出错了。
非常感谢您的帮助!
答案 0 :(得分:0)
我认为这就是您所需要的:
>>> datetime.utcnow()
<DateTime ...>
# Behind the scenes, I call _.append(returned_datetime)
>>> _[0].month # works, but not the most ideal way
>>> _.month # crashes because repr did not return string.
最终结果如下:
def buildTree(mylist) :
while len(mylist) > 1 :
leastTwo = tuple(mylist[0:2])
combFreq = leastTwo[0][0] + leastTwo[1][0]
mylist = sorted(mylist[2:] + [(combFreq,leastTwo)], key=lambda a: a[0])
return mylist[0]
mylist = [(1, 'b'), (1, 'd'), (1, 'g'), (2, 'c'), (2, 'f'), (3, 'a'), (5, 'e')]
print(buildTree(mylist) )