问题
现在有多个字典或者映射,你想将它们从逻辑上(注意哈 ,这里是逻辑上,并没有真正的合并)合并为一个单一的映射后执行某些操作, 比如查找值或者检查某些键是否存在。
解决方案
使用 collections库的 ChainMap类,可以快速的将多个 dict合并在一起
总结:
1.ChainMap可以将多个 dict合并在一起,当做一个整体来处理,并且它比创建一个新的 dict或者使用 dict.update()速度要快
ChainMap的底层实现是将合并的字典存到一个 list当中,这个 list我们可以通过访问 maps成员得到
2.
对于查询操作, ChainMap会扫描这个 list,直到找到key存在然后返回,所以上面的例子,我们的 c['y']得到的是World
而对于增加和删除操作, ChainMap只会操作 list中的第一个 dict
另外一点需要注意的是, ChainMap是按引用存储的,意思是如果我们修改了原来的 dict,这个修改是会被反射到 ChainMap里,举个例子: