collections的常用类型有:
计数器(Counter)
双向队列(deque)
默认字典(defaultdict)
有序字典(OrderedDict)
可命名元组(namedtuple)
使用以上类型时需要导入模块 from collections import *
1. Counter
Counter 作为字典(dict)的一个子类用来进行hashtable计数,将元素进行数量统计、计数后返回一个字典,键值为元素:值为元素个数
- s = 'abcbcaccbbad'
- l = ['a','b','c','c','a','b','b']
- d = { '2': 3, '3': 2, '17': 2}
- # Counter 获取各元素的个数,返回字典
- print(Counter(s)) # Counter({'c': 4, 'b': 4, 'a': 3})
- print(Counter(l)) # Counter({'b': 3, 'a': 2, 'c': 2})
- print(Counter(d)) # Counter({3: 3, 2: 2, 17: 1})
most_common
- # most_common(int) 按照元素出现的次数进行从高到低的排序,返回前int个元素的字典
- m1 = Counter(s)
- print(m1) # Counter({'c': 4, 'b': 4, 'a': 3, 'd': 1})
- print(m1.most_common(3)) # [('c', 4), ('b', 4), ('a', 3)]
elements
- # elements 返回经过计数器Counter后的元素,返回的是一个迭代器
- e1 = Counter(s)
- print(''.join(sorted(e1.elements()))) # aaabbbbcccc
- e2 = Counter(d)
- print(sorted(e2.elements())) # ['17', '17', '2', '2', '2', '3', '3'] 字典返回value个key
update
- # update 和set集合的update一样,对集合进行并集更新
- u1 = Counter(s)
- u1.update('123a')
- print(u1) # Counter({'a': 4, 'c': 4, 'b': 4, '1': 1, '3': 1, '2': 1})
substract
- # substract 和update类似,只是update是做加法,substract做减法,从另一个集合中减去本集合的元素,
- sub1 = 'which'
- sub2 = 'whatw'
- subset = Counter(sub1)
- print(subset) # Counter({'h': 2, 'i': 1, 'c': 1, 'w': 1})
- subset.subtract(Counter(sub2))
- print(subset) # Counter({'c': 1, 'i': 1, 'h': 1, 'a': -1, 't': -1, 'w': -1}) sub1中的h变为2,sub2中h为1,减完以后为1
iteritems
与字典dict的items类似,返回由Counter生成的字典的所有item,只是在Counter中此方法返回的是一个迭代器,而不是列表
iterkeys
与字典dict的keys方法类似,返回由Counter生成的字典的所有key,只是在Counter中此方法返回的是一个迭代器,而不是列表
itervalues
与字典dict的values方法类似,返回由Counter生成的字典的所有value,只是在Counter中此方法返回的是一个迭代器,而不是列表
2.deque
队列右边添加元素