使用 list() 明确创建的列表上的错误 "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()
内置函数显式创建的变量上调用 len()
函数,但它不起作用。我做错了什么?
代码如下:
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
的函数,而在这里我显然使用列表构造函数。
函数 occurences
returns 包含字符串中每个字符出现次数的字典(如果重要的话)。
l_n = l_n.sort(key=lambda tup: tup[1])
这里 sort()
函数就地排序列表。因此它返回 None.
试试这个:
l_n = sorted(l_n, key=lambda tup: tup[1])
或者就是这样:
l_n.sort(key=lambda tup: tup[1])
我是 Python 的新手,对于我的 AI class,我正在尝试为字符串编写霍夫曼编码程序。为此,我需要构建一个优化的加权树。问题是,我试图在使用 list()
内置函数显式创建的变量上调用 len()
函数,但它不起作用。我做错了什么?
代码如下:
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
的函数,而在这里我显然使用列表构造函数。
函数 occurences
returns 包含字符串中每个字符出现次数的字典(如果重要的话)。
l_n = l_n.sort(key=lambda tup: tup[1])
这里 sort()
函数就地排序列表。因此它返回 None.
试试这个:
l_n = sorted(l_n, key=lambda tup: tup[1])
或者就是这样:
l_n.sort(key=lambda tup: tup[1])