一、计数器(Counter)
Counter是对字典类型的补充,用于追踪值的出现次数。
注:因Counter继承于dict类,所以其具备dict类的所有功能
1 import collections 2 c1 = collections.Counter(‘skdhflsdkngsnlknvdlfb‘) 3 print(c1)
Counter
1、__missing__(self, key)对于不存在的元素,返回计数器为0
import collections c1 = collections.Counter(‘skdhflsdkngsnlknvdlfb‘) print(c1.__missing__(‘q‘))
2、most_common(self, n=None)显示前n个元素和计数器
1 import collections 2 c1 = collections.Counter(‘skdhflsdkngsnlknvdlfb‘) 3 print(c1) 4 print(c1.most_common(4))
most_common
3、elements(self)计数器中的所有元素,注:此处非所有元素集合,而是包含所有元素集合的迭代器
import collections c1 = collections.Counter(‘skdhflsdkngsnlknvdlfb‘) item = list(c1.elements()) print(item)
4、update(self, iterable=None, **kwds)更新计数器,其实就是增加;如果原来没有,则新建,如果有则加一
1 import collections 2 c = collections.Counter(‘which‘) 3 print(c) 4 c.update(‘witch‘) 5 print(c) 6 d = collections.Counter(‘watch‘) 7 c.update(d) 8 print(c)
update
5、subtract(self, iterable=None, **kwds)相减,原来的计数器中的每一个元素的数量减去后添加的元素的数量
1 import collections 2 c = collections.Counter(‘which‘) 3 print(c) 4 c.subtract(‘witch‘) 5 print(c) 6 d = collections.Counter(‘watch‘) 7 c.subtract(d) 8 print(c)
subtract
二、有序字典(orderedDict )
orderdDict是对字典类型的补充,他记住了字典元素添加的顺序
1 import collections 2 o = collections.OrderedDict() 3 o[‘k1‘] = ‘v1‘ 4 o[‘k2‘] = ‘v2‘ 5 o[‘k3‘] = ‘v3‘ 6 print(o) 7 print(o) 8 print(o) 9 print(o)
orderedict
其余功能等同于字典
三、默认字典(defaultdict)
defaultdict是对字典的类型的补充,他默认给字典的值设置了一个类型。
1 import collections 2 li = [11,22,33] 3 ded = collections.defaultdict(list) 4 for i in li: 5 ded[‘k1‘].append(i) 6 print(ded)
defaultdict
四、可命名元组(namedtuple)
根据nametuple可以创建一个包含tuple所有功能以及其他功能的类型。
1 import collections 2 person = collections.namedtuple(‘person‘,‘name age gender‘) 3 print(type(person)) 4 hetan = person(name = ‘hetan‘,age = 26,gender = ‘male‘) 5 print(hetan[0]) 6 print(‘{name} is {age} years old {gender}‘.format(name = hetan[0],age = hetan[1],gender = hetan[2]))
namedtuple
五、双向队列(deque)
一个线程安全的双向队列
1 import queue 2 q = queue.deque() 3 for i in [1,2,3,4,5]: 4 q.append(i) 5 print(q) 6 q.appendleft(6) 7 print(q) 8 q.popleft() 9 print(q) 10 q.rotate(2) 11 print(q) 12 li = [7,8,9,10] 13 q.extendleft(li) 14 print(q)
deque
1、appendleft(n)从左边像队列中增加元素,n表示增加的元素
2、popleft()从队列的左边删除元素,并且返回删除值
3、rotate(n)旋转队列,默认时值为1,由右边开始旋转,负值代表左边旋转,n代表从队列的第一个元素开始,n从1开始计数
4、extendleft(n)从左边扩展队列,n表示扩展的队列
注:既然有双向队列,也有单项队列(先进先出 FIFO )
1 import queue 2 q = queue.Queue() 3 for i in [1,2,3,4,5]: 4 q.put(i) 5 for i in range(5): 6 print(q.get())
Queue