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)

 

posted @ 2018-09-28 23:26  写bug的日子  阅读(97)  评论(0编辑  收藏  举报