【问题标题】: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。

【问题讨论】:

标签: python python-2.7 dictionary


【解决方案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'}
    

    【讨论】:

      猜你喜欢
      • 2023-01-07
      • 2010-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多