
 
文章目录
- 前言
 - 知识点
 - 字典合并
 - 1. `dict.update()`基础合并
 - 2. 字典推导式 + `update()`
 
- 后话
 
前言
这里是Python小技巧的系列文章。这是第四篇,快速合并字典。
在Python的使用中,有时候需要将两个 dict(字典) 进行合并。
 通常我们会借助 dict(字典) 的内置方法 update() 来实现这一目标。这是一个很高效的合并字典的方法。
但在以下的场景中,update()就无法满足需求了:
- 有字典 
a和b,我们需要将字典 b 合并到字典 a 中,但同时要保留字典 a 中的值; - 在字典 
a和b中,若有同名的key(键/字段),就会导致b的值覆盖a字典中同字段的值。 
所以接下来,细说一下关于 合并 Python 字典的几个方法。
知识点
| 知识点 | 释义 | 
|---|---|
dict.update([other]) | 使用来自 other 的键/值对更新字典,覆盖原有的键。 返回 None。update() 接受另一个字典对象,或者一个包含键/值对的可迭代对象 | 
字典合并
1. dict.update()基础合并
 
这里的字典 a 和 b 有一个同名字段 y。
 可以看到输出的结果,字典 a 和 b 合并了,但是字典 a 的值被字典 b 的值所覆盖了。
所以,只使用 dict.update() 去进行合并,是无法满足一些复杂的要求的。
a = {'x': 1, 'y': 2}
b = {'y': 3, 'z': 4}
a.update(b)
# 现在,字典 a 已经包含了 b 的内容
print(a)
 
输出如下:
>>> {'x': 1, 'y': 3, 'z': 4}
 
2. 字典推导式 + update()
 
解决上面的需求:既要合并字典 a 和 b,又要保留 a 字典中的值。
代码中使用字典推导式,遍历字典 b 的键值对,检查每个键如果不存在于字典 a 中,就将这个键值对添加到字典 a 中。
 确保了在合并 a 和 b 的过程中,仅当键在 a 中不存在时才添加相应的键值对。这样就保留了字典 a 中原有的值。
a = {'x': 1, 'y': 2}
b = {'y': 3, 'z': 4}
# 关键代码
a.update({key: val for key, val in b.items() if key not in a})
# 现在,字典 a 已经包含了 b 的内容
print(a)
 
输出如下:
>>> {'x': 1, 'y': 2, 'z': 4}
 
后话
通过这些简单而有效的技巧,你可以更灵活地处理字典合并的情况。回顾一下我们学到的内容:
- 使用 
dict.update()是一种基础而直接的字典合并方法,但需要注意可能导致值的覆盖。 - 结合
字典推导式和update()可以满足更复杂的需求,确保在合并的过程中保留原有字典的值。 
总的来说,这些技巧为处理字典合并提供了灵活性和可定制性。在实际应用中,你可以根据具体场景选择适当的方法。
本次分享到此结束!
















![[Spring] @Bean 修饰方法时如何注入参数](https://img-blog.csdnimg.cn/141f4aec14694dd8899e9f6a24d67799.png)


