首页 > 解决方案 > 使用 list() 显式创建的列表上的错误“'NoneType' 类型的对象没有 len()”

问题描述

我是 Python 的新手,对于我的 AI 课程,我试图为字符串做一个 Huffman 编码程序。为此,我需要构建一个优化的加权树。问题是,我试图len()在使用内置函数显式创建的变量上调用该list()函数,但它不起作用。我究竟做错了什么 ?

这是代码:

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返回一个字典,其中包含字符串中每个字符的出现次数(如果这很重要)。

标签: pythonbuilt-in

解决方案


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

这里sort()函数对列表进行就地排序。因此它返回无。

而是试试这个:

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

或者只是这个: l_n.sort(key=lambda tup: tup[1])


推荐阅读