为了账号安全,请及时绑定邮箱和手机立即绑定

在声明语句列表= []中将项目追加到python列表中。append(val)是NoneType

在声明语句列表= []中将项目追加到python列表中。append(val)是NoneType

翻翻过去那场雪 2021-03-18 14:14:12
我在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']


查看完整回答
反对 回复 2021-03-30
?
侃侃尔雅

TA贡献1801条经验 获得超16个赞

append就地操作。但是,在这种情况下,您可以使用setdefault:

hash.setdefault(key, []).append(val)


查看完整回答
反对 回复 2021-03-30
  • 2 回答
  • 0 关注
  • 183 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号