问题

现在有多个字典或者映射,你想将它们从逻辑上(注意哈 ,这里是逻辑上,并没有真正的合并)合并为一个单一的映射后执行某些操作, 比如查找值或者检查某些键是否存在。

解决方案

使用 collections库的 ChainMap类,可以快速的将多个 dict合并在一起

python每日小练0013

总结:

1.ChainMap可以将多个 dict合并在一起,当做一个整体来处理,并且它比创建一个新的 dict或者使用 dict.update()速度要快

ChainMap的底层实现是将合并的字典存到一个 list当中,这个 list我们可以通过访问 maps成员得到

2.

对于查询操作, ChainMap会扫描这个 list,直到找到key存在然后返回,所以上面的例子,我们的 c['y']得到的是World

而对于增加和删除操作, ChainMap只会操作 list中的第一个 dict

另外一点需要注意的是, ChainMap是按引用存储的,意思是如果我们修改了原来的 dict,这个修改是会被反射到 ChainMap里,举个例子:

相关文章: