亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

TypeError: unorderable types: Tree() < int()

TypeError: unorderable types: Tree() < int()

LEATH 2021-09-14 21:26:25
我在 python 2 中運行了這個霍夫曼編碼代碼,它運行順利。但是,在 python 3 中,它給了我一個如上所述的錯誤。我知道類型不相同(因此無法比較)但我應該如何解決這個問題?請注意,該錯誤特別指出q.put((kiri[0]+kanan[0],node)),我認為問題在于優先級隊列中的比較。導致錯誤的輸入示例:3123第一行是指字符數。接下來的幾行顯示第一個字符、第二個字符等的頻率。請注意,如果第一行小于 3,代碼會以某種方式運行。例如:212工作得很好任何幫助是極大的贊賞。謝謝!n=list(map(int, input().split()))n=n[0]li=[None]*nfor i in range(n):    inp=list(map(int, input().split()))    li[i]=inp[0]char=[None]*nindex=1for i in range(n):    char[i]=index    index+=1freq=list(zip(li,char))import queueclass Tree:    def __init__(self,kanan,kiri):        self.kanan=kanan        self.kiri=kiri    def anak(self):        return int((self.kanan,self.kiri))q=queue.PriorityQueue()for nilai in freq:    q.put(nilai) size=q.qsize()for i in range(size,1,-1):           kanan=q.get()    kiri=q.get()    node=Tree(kanan,kiri)    q.put((kiri[0]+kanan[0],node))huffmantree=q.get()def traverse(huffmantree,st,pref):    if isinstance(huffmantree[1].kanan[1],Tree):        traverse(huffmantree[1].kanan,st,pref+"0")    else: st[huffmantree[1].kanan[1]]=pref+"0"    if isinstance(huffmantree[1].kiri[1],Tree):        traverse(huffmantree[1].kiri,st,pref+"1")    else: st[huffmantree[1].kiri[1]]=pref+"1"    return stbinarystring=traverse(huffmantree,{},"")for i in freq: print(binarystring[i[1]])
查看完整描述

1 回答

  • 1 回答
  • 0 關注
  • 258 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號