问题
现在有多个字典或者映射,你想将它们从逻辑上合并为一个单一的映射后执行某些操作, 比如查找值或者检查某些键是否存在。
实现
通过 collections 模块中的 ChainMap 类来实现。
1 | >>> from collections import ChainMap |
说明
- 一个 ChainMap 接受多个字典并将它们在逻辑上变为一个字典。
这些字典并不是真的合并在一起了, ChainMap 类只是在内部创建了一个容纳这些字典的列表并重新定义了一些常见的字典操作来遍历这个列表。- 如果出现重复键,那么第一次出现的映射值会被返回。
- 对于字典的更新或删除操作总是影响的是列表中第一个字典。
- 与 update() 方法将两个字典合并不同的是,ChainMap 使用原来的字典,它自己不创建新的字典。故原字典改变,ChainMap 创建的类字典也会跟着改变。