[英]A len(list) gives TypeError: object of type 'NoneType' has no 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.