Python:AttributeError:“int”对象没有属性“append”

2024-06-02 16:34:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个关于智力的口诀。我要做的是循环遍历“something”,如果dict中有键,则将该项添加到lsit中,或者创建一个新列表并添加该项。 这是我的密码。在

levels = {}
if curr_node.dist in levels:
   l = levels[curr_node.dist]
   l.append(curr_node.tree_node.val)...........***
else:
   levels[curr_node.dist] = []
   levels[curr_node.dist].append(curr_node.tree_node.val)
   levels[curr_node.dist] = curr_node.tree_node.val

我的问题有两个方面。 1我得到以下错误, Line 27: AttributeError: 'int' object has no attribute 'append'Line 27 is the line marked with *** 我遗漏了什么导致了错误。在

  1. 我怎样才能以更pythonical的方式运行这个在dict中检查键并添加到列表中的算法呢。在

Tags: nodetree列表dist错误linevaldict
1条回答
网友
1楼 · 发布于 2024-06-02 16:34:49

首先设置一个列表,然后用以下值替换该列表:

else:
   levels[curr_node.dist] = []
   levels[curr_node.dist].append(curr_node.tree_node.val)
   levels[curr_node.dist] = curr_node.tree_node.val

放下最后一行,它会破坏你的代码。在

不使用if...else,您可以使用^{} method在键丢失时分配一个空列表,同时返回该键的值:

^{pr2}$

这一行取代了6if: ... else ...行。在

您还可以使用^{} object

from collections import defaultdict

levels = defaultdict(list)

以及

levels[curr_node.dist].append(curr_node.tree_node.val)

对于缺少的键,会自动添加一个列表对象。这有一个缺点:如果以后的代码中有一个错误,意外地使用了一个不存在的键,则会得到一个空列表,使调试该错误时的问题变得混乱。在

相关问题 更多 >