为啥 dict(k=4, z=2).update(dict(l=1)) 在 Python 中返回 None?
Posted
技术标签:
【中文标题】为啥 dict(k=4, z=2).update(dict(l=1)) 在 Python 中返回 None?【英文标题】:Why does dict(k=4, z=2).update(dict(l=1)) return None in Python?为什么 dict(k=4, z=2).update(dict(l=1)) 在 Python 中返回 None? 【发布时间】:2013-08-04 22:59:38 【问题描述】:为什么dict(k=4, z=2).update(dict(l=1))
返回None
?它似乎应该返回dict(k=4, z=2, l=1)
?我正在使用 Python 2.7。
【问题讨论】:
为什么人们投票反对?对我来说这是非常有益的。 另见: ***.com/questions/1452995/… 【参考方案1】:.update()
方法就地改变字典并返回None
。字典本身被修改了,不需要返回修改后的字典。
先分配字典:
a_dict = dict(k=4, z=2)
a_dict.update(dict(l=1))
print a_dict
这有明确的记录,请参阅dict.update()
method documentation:
使用其他键/值对更新字典,覆盖现有键。返回
None
。
【讨论】:
“就地”是什么意思? @raster-blaster:该方法改变了它所操作的字典。它不会返回更改后的字典。 哦,我明白了。现在看起来比较明显。非常感谢。作为旁注,我认为您的意思是 a_dict 而不是 dict 在第二行。 试过了,它告诉我要等7分钟,会尽快完成。【参考方案2】:dict.update()
方法确实更新到位。它不会返回修改后的dict,而是None
。
文档在第一行说:
使用其他键/值对更新字典,覆盖现有键。 不返回。
【讨论】:
【参考方案3】:为了完成,如果您确实想返回字典的修改版本,而不修改原始版本,您可以这样做:
original_dict = 'a': 'b', 'c': 'd'
new_dict = dict(original_dict.items() + 'c': 'f', 'g': 'h'.items())
这将为您提供以下内容:
new_dict == 'a': 'b', 'c': 'f', 'g': 'h'
original_dict == 'a': 'b', 'c': 'd'
【讨论】:
以上是关于为啥 dict(k=4, z=2).update(dict(l=1)) 在 Python 中返回 None?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 python dict.update() 不返回对象?
为啥当我打印字典的键时,它前面有 dict_keys ? [复制]
为啥更改 dict2 内的嵌套 dict 会影响 dict1? [复制]