python - 使用 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
返回一个字典,其中包含字符串中每个字符的出现次数(如果这很重要)。
解决方案
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])
推荐阅读
- symfony - Symfony:捆绑中的侦听器优先级
- ios - interactivePopGesture 的安全区域底部布局问题
- bash - While_Run_For_loop_In_bash-权限被拒绝
- c# - 数据表中显示的“重复”数据
- mysql - 带括号和不带括号的 MySQL 给出不同的结果
- web - 如何在任何嵌入式代码中禁用图像
- android - 如何在 recyclerview 中使用运动布局
- c# - ASP.NET C# 中的字计数器桌面应用程序
- c# - 如何将DevExpress gridControl中的RepositoryItemPictureEdit中的图像保存到sql数据库
- java - Java 安卓 GcmTaskService