Python3:TypeError:“列表”对象不可调用

时间:2018-07-28 00:33:16

标签: python python-3.x list tuples typeerror

我正在尝试为练习建立霍夫曼树,而构建元组的代码不断告诉我,对于以下代码,我遇到了 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 的指示进行操作,该指示与我做的事情完全相同,因此我不确定特别是对我而言哪里出错了。

非常感谢您的帮助!

1 个答案:

答案 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) )