collections类
这个类相当于一个扩展包,包含针对字典、列表、元组等数据类型的一些扩展操作。
1、计数器Counter
#计数器可以列出字符串和列表中元素出现的个数,并以字典返回
>>> import collections >>> li=[‘a‘,‘b‘,‘a‘,‘c‘,‘a‘,‘b‘,‘d‘,‘d‘,‘a‘] >>> st=‘asdasdasdasdasda‘ >>> li_c=collections.Counter(li) >>> st_c=collections.Counter(st) >>> print li_c Counter({‘a‘: 4, ‘b‘: 2, ‘d‘: 2, ‘c‘: 1}) >>> print st_c Counter({‘a‘: 6, ‘s‘: 5, ‘d‘: 5}) #通过most_comm()方法可以指定显示出现次数排名前n位的元素 >>> print li_c.most_common(3) [(‘a‘, 4), (‘b‘, 2), (‘d‘, 2)]
#update()方法可以将两个计数器的统计结果相加
>>> import collections >>> li_a=[‘a‘,‘b‘,‘a‘,‘c‘,‘a‘] >>> li_b=[‘b‘,‘c‘] >>> li_a_co=collections.Counter(li_a) >>> li_b_co=collections.Counter(li_b) >>> print li_a_co Counter({‘a‘: 3, ‘c‘: 1, ‘b‘: 1}) >>> print li_b_co Counter({‘c‘: 1, ‘b‘: 1}) >>> li_a_co.update(li_b_co) >>> print li_a_co Counter({‘a‘: 3, ‘c‘: 2, ‘b‘: 2})
2、有序字典
#有序字典的的操作方法和标准字典完全一致,唯一的区别就是有序字典里的key是可以按照顺序展现出来的,这是因为有有序字典其实就是在标准字典的基础上又将key都存入了一个列表,通过列表管理key
>>> import collections >>> ord_dic=collections.OrderedDict() >>> ord_dic={}
3、默认字典
#标准字典中value的值数据类型是需要提前定义的,否则直接向value中添加数据就可能有问题。例如如下需求:
有如下值集合 [11,22,33,44,55,66,77,88,99,90],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。
即: {‘k1‘: 大于66 , ‘k2‘: 小于66}
#传统实现方式
li=[11,22,33,44,55,66,77,88,99,90] list_a=[] list_b=[] dic={‘k1‘:list_a,‘k2‘:list_b} for i in li: if i > 66: dic[‘k1‘].append(i) else: dic[‘k2‘].append(i) print dic
#用默认字典方式
import collections #coding:utf-8 li=[11, 22, 33,44,55,66,77,88,99,90] #用默认字典方法提前定义value的数据类型 dic=collections.defaultdict(list) for value in li: if value>66: dic[‘k1‘].append(value) else: dic[‘k2‘].append(value) print dic
队列
#队列分为双向队列和单向队列,所有的队列都是有进程安全的。
双向队列是队列两边都可以增减操作,是FIFO模式的
单向队列只有一边可以增减操作,所以单向队列就是个堆栈。
时间: 2024-11-10 03:38:22