为啥 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? [复制]

如何在 Tensorflow 2.0 中使用 K.get_session 或如何迁移它?

python基础:zip和dict详解