collections模块
collections模块
在内置数据类型(dict、list、set、tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter、deque、defaultdict、namedtuple和OrderedDict等。
1.namedtuple: 生成可以使用名字来访问元素内容的tuple
2.deque: 双端队列,可以快速的从另外一侧追加和推出对象
3.Counter: 计数器,主要用来计数
4.OrderedDict: 有序字典
5.defaultdict: 带有默认值的字典
1 import collections 2 3 # namedtuple 4 point = collections.namedtuple('point', ['x', 'y']) 5 print(point(1, 2)) 6 7 # deque 8 de = collections.deque([1, 2, 3]) 9 de.append(1) 10 de.appendleft(2) 11 de.popleft() 12 print(de) 13 14 # OrderedDict 15 # 注意,OrderedDict的Key会按照插入的顺序排列,不是Key本身排序: 16 d2 = dict([('a', 1), ('b', 2), ('c', 3)]) 17 order = collections.OrderedDict(d2) 18 print(order) 19 for key, item in enumerate(order): 20 print(key, item) 21 22 # defaultdict 23 collections.defaultdict() 24 dd = collections.defaultdict(lambda: 0) 25 dd['key1'] = 'abc' 26 print(dd['k2']) 27 28 # Counter 29 counter = collections.Counter([1, 23, 12, 4, 124, 12, 4, 12]) # couter(可迭代对象) 30 # 查 31 print(counter[1111]) # key 缺失,不会报错,返回0 32 for i in counter.items(): 33 print(i) 34 # 更新 35 counter.update('123') # 计数器更新,增11 36 counter.subtract('123') # 计数器更新,减 37 # 删除 38 counter.pop('1') # 删除,value为0不意味着元素被删除 39 del counter['2'] 40 counter[1] = 0 41 # elements 42 print(list(counter.elements())) # 返回一个迭代器。元素被重复了多少次,在该迭代器中就包含多少个该元素。元素排列无确定顺序,个数小于1的元素不被包含。 43 # 算数集合操作 + - | & 加 减 并 交 44 c = collections.Counter('123') 45 d = collections.Counter('345') 46 print(c + d) 47 print(c - d) 48 print(c | d) 49 print(c & d)