我在python中使用链接方法时遇到了这种情况。假设我有以下代码hash = {}key = 'a'val = 'A'hash[key] = hash.get(key, []).append(val)该hash.get(key, [])回报[]和我期待那本词典是{'a': ['A']}。但是,字典设置为{'a': None}。在进一步查找时,我意识到这是由于python列表而发生的。list_variable = []list_variable.append(val)将list_variable['A'] 设置为但是,在初始声明中设置一个列表list_variable = [].append(val)type(list_variable)<type 'NoneType'> 我对list_variable应该包含['A']的理解和期望有什么问题?为什么这些语句的行为有所不同?
2 回答

繁星淼淼
TA贡献1775条经验 获得超11个赞
该.append()函数会更改列表的位置,因此总是返回None。这是正常的和预期的行为。你并不需要有一个返回值列表本身已经更新。
使用该dict.setdefault()方法设置默认的空列表对象:
>>> hash = {}
>>> hash.setdefault('a', []).append('A')
>>> hash
{'a': ['A']}
您可能对此collections.defaultdict课程也有兴趣:
>>> from collections import defaultdict
>>> hash = defaultdict(list)
>>> hash['a'].append('A')
>>> hash
defaultdict(<type 'list'>, {'a': ['A']})
如果要返回添加了额外项目的新列表,请使用串联:
lst = lst + ['val']
添加回答
举报
0/150
提交
取消