在collection模块中,除了defaultdict之外,还有不同的映射类型。
OrderDict 有序字典:
特殊的popitem方法默认删除字典的最后一个元素,如果是odict.popitem(last=False)调用,会删除并返回第一个添加的元素
ChainMap 合并多个字典(映射对象) 仅python3可用:
假如你有如下两个字典,在两个字典中执行查找操作(比如先从 a 中找,如果找不到再在 b 中找)。 一个非常简单的解决方案就是使用 collections 模块中的 ChainMap 类。比如:
这里并不是产生了一个新的字典,ChainMap内部产生了一个列表,把字典放进去遍历处理。这样的好处是没有生成新的字典,不会浪费内存。
如果遇到重复的键,已第一个为准返回
from collections import ChainMap
a = {'x': 1, 'z': 3}
b = {'y': 2, 'z': 4}
c = ChainMap(a, b)
print(c.get('x'))
print(c.get('z'))
打印 1 3
ChainMap 常用于python的变量查询规则:
from collections import ChainMap
import builtins
lookup = ChainMap(globals(), locals(), vars(builtins))
print(lookup)
打印 ChainMa