在在Python中合并字典模块中合并字典模块ChainMap的隐藏坑【推荐】的隐藏坑【推荐】
在Python中,当我们有两个字典需要合并的时候,可以使用字典的 update 方法,例如:
a = {'a': 1, 'b': 2}
b = {'x': 3, 'y': 4}
a.update(b)
print(a)
运行效果如下图所示:
然而,这个方法有一个问题——它会改变其中一个字典。如果我们不想改变原有的两个字典,那么我们必需要单独再创建一个
字典:
a = {'a': 1, 'b': 2}
b = {'x': 3, 'y': 4}
c = dict(a)
c.update(b)
print(c)
print(a)
如果原来的两个字典非常大,那么这种方式将会浪费大量的内存。
无论是直接修改原有的其中一个字典,还是创建另一个字典,这两种方案都有点缺陷。那么有没有既不修改原有字典,又不另
外创建一个新的字典的方法呢?
答案就是 collections 模块下面的 ChainMap 。
使用 ChainMap 可以把多个字典合并成一个 ChainMap 对象。读写这个对象就像是读字典一样。
例如:
from collections import ChainMap
a = {'a': 1, 'b': 2}
b = {'x': 3, 'y': 4}
c = ChainMap(a, b)
print(c['a'])
print(c['y'])
运行效果如下图所示:
评论0
最新资源