标签:day3
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模式的
单向队列只有一边可以增减操作,所以单向队列就是个堆栈。
本文出自 “霹雳豆包” 博客,谢绝转载!
标签:day3
原文地址:http://830909.blog.51cto.com/8311014/1710978