7

为什么dict(k=4, z=2).update(dict(l=1))返回None?它似乎应该返回dict(k=4, z=2, l=1)?我正在使用 Python 2.7。

4

3 回答 3

16

该方法在原地.update()更改字典并返回. 字典本身已更改,不需要返回更改后的字典。None

首先分配字典:

a_dict = dict(k=4, z=2)
a_dict.update(dict(l=1))
print a_dict

这有明确的记录,请参阅dict.update()方法文档

使用其他键/值对更新字典,覆盖现有键。返回None

于 2013-08-03T22:14:54.167 回答
2

dict.update()方法确实更新到位。它不返回修改后的字典,而是返回None.

文档在第一行说:

使用其他键/值对更新字典,覆盖现有键。返回无。

于 2013-08-03T22:14:55.750 回答
2

为了完成,如果您确实想返回字典的修改版本,而不修改原始版本,您可以这样做:

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'}
于 2017-08-03T15:26:47.430 回答