【Python茴香豆系列】之 字典合并
用 Python 编程,使用不同的方法来完成同一个目标,有时候是一件很有意思的事情。这让我想起鲁迅笔下的孔乙己。孔乙己对于茴香豆的茴字的四种写法颇有研究。我不敢自比孔乙己,这里搜集一些 Python 的茴香豆,以飨各位码农。
假设有字典 x 和字典 y , BOSS 需要把他们合并,生成一个新的字典 z , x 和 y 保持不变。要实现的效果如下:
1 | x = {'a': 1, 'b': 2} |
经过处理后
1 | z = {'a': 1, 'b': 8, 'c': 9} |
作为一个超级初学者,可能的做法是:
1 | 'a': 1, 'b': 2} x = { |
任务完成!
但是,这样的解法显然是不入孔乙己法眼的,于是开始数茴香豆。
茴香豆一: update
如果你的 Python 版本小于等于 3.4 ,那么如下方法应该是最常见的:
1 | z = x.copy() |
茴香豆二: 两个小星星
如果你已经完全抛弃了 2 ,并且 Python 版本已经大于等于 3.5 ,那么可以这样:
1 | z = {**x, **y} |
茴香豆三: 一条竖杠
什么?你的 Python 版本已经大于等于 3.9 了?好吧:
1 | z = x | y |
茴香豆四: ChainMap
ChainMap 可能对大多数开发者来说有点陌生,其特点是:“先入为主”,所以要注意两个字典的顺序。
1 | from collections import ChainMap |
茴香豆五: Dict
Dict 是个好东西,下面是一些示例。但是,本人并不推荐使用。
为什么?不够优雅。
1 | dict(x, **y) # 仅限于字典的 Key 均为 string 时有效 z = |