gpt4 book ai didi

python - 更新字典而不添加新键?

转载 作者:行者123 更新时间:2023-12-03 15:24:29 24 4
gpt4 key购买 nike

什么是好的 1-liner(除了将其放入函数中)来实现这一点:

# like dict1.update(dict2) but does not add any keys from dict2
# that are not already in dict1
for k in dict1:
if k in dict2:
dict1[k]=dict2[k]

我想这会起作用,但使用“ protected ”功能:
[dict1.__setitem__(k, dict2[k]) for k in dict1 if k in dict2]

最佳答案

dict1.update((k, dict2[k]) for k in set(dict2).intersection(dict1))

是我在 Python 2.6 或更低版本中执行此操作的方式(有关如何在更高版本中执行此操作的更多信息,请参阅)。

在另一个映射旁边, dict.update() 也可以采用 (key, value) 的迭代元组,我们根据两个字典的集合交集生成(因此它们具有共同的所有键)。

演示:
>>> dict1 = {'foo':'bar', 'ham': 'eggs'}
>>> dict2 = {'ham': 'spam', 'bar': 'baz'}
>>> dict1.update((k, dict2[k]) for k in set(dict2).intersection(dict1))
>>> dict1
{'foo': 'bar', 'ham': 'spam'}

在 python 2.7 中你可以使用新的 Dict views要在不强制转换为集合的情况下实现相同的目标:
dict1.update((k, dict2[k]) for k in dict1.viewkeys() & dict2.viewkeys())

在 Python 3 中,dict View 是默认值,因此您可以将其拼写为:
dict1.update((k, dict2[k]) for k in dict1.keys() & dict2.keys())

关于python - 更新字典而不添加新键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14941115/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com