我有建立哈夫曼樹,其是如下的方法:類型錯誤:「<」不支持的「元組」的實例之間和「STR」
def buildTree(tuples) :
while len(tuples) > 1 :
leastTwo = tuple(tuples[0:2]) # get the 2 to combine
theRest = tuples[2:] # all the others
combFreq = leastTwo[0][0] + leastTwo[1][0] #enter code here the branch points freq
tuples = theRest + [(combFreq,leastTwo)] # add branch point to the end
tuples.sort() # sort it into place
return tuples[0] # Return the single tree inside the list
但同時I進料與以下參數的函數:
[(1, 'b'), (1, 'd'), (1, 'g'), (2, 'c'), (2, 'f'), (3, 'a'), (5, 'e')]
我得到的錯誤作爲
File "<stdin>", line 7, in buildTree
tuples.sort()
TypeError: '<' not supported between instances of 'tuple' and 'str'
在調試,我發現該錯誤是tuples.sort()
。
'leastTwo'是元組的元組,然後用'combFreq'(一個整數)將它包裝在* another *元組中。你不能將這個* inner *元組與其他每個元組的第二個元素中的字符串進行比較。 –
換句話說,您只能添加'(int,str)'元組,而不是'(int,((int,str),(int,str)))'元組。 –
現在,如果您只想對每個元組中的** first **值進行排序,則需要指定一個排序關鍵字來提取它。 –