Python 3.9+ 如何仅合并另一字典中与目标字典共有的字段
仅更新已有键的字典合并实现方案(Python 3.9+)
问题背景
现有两个字典:
a = {'a': 1, 'b': 2} b = {'b': 22, 'c': 3}
需求为将b合并到a时,仅更新a中已存在的键的值,直接忽略b中a没有的键。
方案说明
你原本的写法功能完全正确,也符合Python语法规范,唯一的可优化点是不需要生成临时的中间字典,有更简洁高效的实现:
1. 原地修改原字典(优先推荐)
直接取两个字典的共同键遍历赋值,无额外内存开销,可读性强:
for k in a.keys() & b.keys(): a[k] = b[k] # 运行后a的值为 {'a': 1, 'b': 22}
2. 生成新字典(不修改原a)
如果需要保留原字典的内容,可以用3.9新增的字典合并运算符实现:
new_a = a | {k: b[k] for k in a.keys() & b.keys()}
原有写法的优化说明
你之前使用的写法:
a |= {k: v for k, v in b.items() if k in a.keys()}
功能完全正常,只是字典推导式会生成一个临时的字典对象,当字典规模较大时会产生不必要的内存占用,性能略低于直接遍历共同键的方案。
内容的提问来源于stack exchange,提问作者gmagno
相关产品推荐
相关产品推荐

