Python语言深入:collections模块深入(2)
5,OrderedDict
OrderedDict,顾名思义,是保存顺序关系的字典。像列表一样,OrederedDict会存储每个元素创建时的具体位置。这样我们能够在OrderedDict的对象创建完毕后,安装创建时的顺序来访问和遍历其中的元素。这在那些关心字典元素顺序的些场合有它的作用。比如,下面的这个例子。
from collections import OrderedDict d = OrderedDict() d['foo'] = 1 d['bar'] = 2 d['spam'] = 3 d['grok'] = 4 # 将会输出 "foo 1", "bar 2", "spam 3", "grok 4" for key in d: print(key, d[key])
需要注意的是,OrderedDict在底层的实现是一个双向链表,这使得它实际上要比普通的字典类型的对象要多消耗一倍的存储空间。所以如果你想要创建一个超大的OrderedDict对象时,你需要考虑到它的空间开销值不值得你这样做。
6,defaultdict
defaultdict 也是一种增强的字典数据类型。你可以指定其默认的类型,这使得你可以在添加元素时按默认的类型来创建元素并添加值,而不需要设置其默认值。例如:
from collections import defaultdict d = defaultdict(list) d['a'].append(1) d['a'].append(2) d['b'].append(4) print(d) # 输出:defaultdict(<class 'list'>, {'a': [1, 2], 'b': [4]}) d = defaultdict(set) d['a'].add(1) d['a'].add(2) d['b'].add(4) print(d) # 输出:defaultdict(<class 'set'>, {'a': {1, 2}, 'b': {4}})