簡體   English   中英

使用 list() 顯式創建的列表上出現錯誤“'NoneType' 類型的對象沒有 len()”

[英]Error “object of type 'NoneType' has no len()” on list explicitely created with list()

我是 Python 和我的 AI class 的新手,我試圖為字符串做一個霍夫曼編碼程序。 為此,我需要構建一個優化的加權樹。 問題是,我試圖在使用list()內置 function 顯式創建的變量上調用len() function,但它不起作用。 我究竟做錯了什么?

這是代碼:

def opti(text):
        occ = occurences(text)
        occ = dict(sorted(occ.items(), key=lambda item: item[1]))
        l_n = list(occ.items())
        while len(l_n) > 1:
                n1 = l_n.pop(0)
                n2 = l_n.pop(0)
                n = Noeud(n1[1] + n2[1], n1, n2)
                l_n.append((n, n.valeur))
                l_n = l_n.sort(key=lambda tup: tup[1])
        return l_n

class Noeud:
        def __init__(self, value, left, right):
                self.value = value
                self.left = left
                self.right = right

如果我打印變量l_n我顯然會得到一個列表,所以我不明白為什么這不起作用。 我已經嘗試尋找其他主題的答案,但答案主要是關於將類型修改為NoneType的其他函數,而在這里我顯然使用了列表構造函數 function。

occurences出現返回一個字典,其中包含字符串中每個字符的出現次數,如果這很重要的話。

l_n = l_n.sort(key=lambda tup: tup[1])

這里sort() function 對列表進行就地排序。 因此它返回無。

而是試試這個:

l_n = sorted(l_n, key=lambda tup: tup[1])

或者就是這個: l_n.sort(key=lambda tup: tup[1])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM