python - 将一个字典合并到另一个仅具有公共(public)字段的字典中

标签 python python-3.9

比方说:

a = {'a': 1, 'b': 2}
b = {'b': 22, 'c': 3}

如何合并 b进入a ,仅设置 a 中已存在的那些属性,忽略所有其他?

这是我想出的解决方案:

a |= {k: v for k, v in b.items() if k in a.keys()}
{'a': 1, 'b': 22}

但我不确定这有多Pythonic。对于这种“简单”的操作来说,感觉有点过于冗长,并且可能存在更好的解决方案。 我最关心的是 Python >= 3.9。

感谢您提前提出的建议。

最佳答案

我不确定Pythonic,但你可以研究set操作,如set.intersection :

a = {'a': 1, 'b': 2}
b = {'b': 22, 'c': 3}

for common_key in set(a).intersection(b):
    a[common_key] = b[common_key]

print(a)

如果你想要一个Python式的单行,你可以使用dict理解,类似于你的方式:

a = {k : v for k, v in (a | b).items() if k in a}

结果:

{'a': 1, 'b': 22}

关于python - 将一个字典合并到另一个仅具有公共(public)字段的字典中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69968386/

相关文章:

python - 无法抓取所有评论

python - 使用 Python-Treetaggerwrapper 进行分块

python - 如何通过 Python 管理我的 Instagram 帐户?

python - 为什么在成员变量上使用 walrus 运算符会引发 SyntaxError?

python - 属性错误 : module 'importlib' has no attribute 'util'

python - 在 macOS 上将 Python 版本升级到 3.9 现在会为某些文件读取代码提供 “variable not defined” 错误

python - 如何将 (2,4) 矩阵与 (4,1) 矩阵相乘?

c++ - SIP4 中的共享指针和构建(原为 : Dynamic casting in SWIG/python? )

python - 什么是 "soft keywords"?