python小白-day3 collections系列

一、计数器(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

posted on 2016-01-17 16:29  显卡  阅读(165)  评论(0编辑  收藏  举报

导航