文章目录
- 前言
- 知识点
- 字典合并
- 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()
可以满足更复杂的需求,确保在合并的过程中保留原有字典的值。
总的来说,这些技巧为处理字典合并提供了灵活性和可定制性。在实际应用中,你可以根据具体场景选择适当的方法。
本次分享到此结束!