将一个dict合并到另一个仅具有公共字段的dict中



比方说:

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}

但我不确定这有多像蟒蛇;简单的";操作并可能存在更好的解决方案。我最关心的是Python>=3.9.

感谢您提前提出的建议。

我不确定Pythonic,但您可以研究像set.intersection:这样的set操作

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}

以下是关于这篇文章的解决方案:在不添加新密钥的情况下更新dict?

a.update((k, b[k]) for k in set(b).intersection(a))

输出:

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

最新更新