使用 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])