collection系列
1.计数器(counter)
Counter是对字典类型的补充,用于追踪值的出现次数。
我们从中挑选一些相对常用的方法来举例:
在上面的例子我们可以看出,counter方法返回的是一个字典,它将字符串中出现的所有字符都进行了统计。在这里再介绍一下update方法,这个update方法是将两次统计的结果相加,和字典的update略有不同。
2.有序字典(OrderedDict):
orderdDict是对字典类型的补充,主要是可以按照字典元素添加顺序输出。
普通字典:无序的,它依靠key,value之间的索引进行匹配。
1 dict={ 2 '1':'test1', 3 '2':'test2', 4 '3':'test3', 5 '4':'test4', 6 '5':'test5', 7 '6':'test6' 8 } 9 for k,v in dict.items(): 10 print k,v
有序字典:字典在内部自动维护了一个key列表。
import collections dict1=collections.OrderedDict() for lines in range(1,7): dict1[str(lines)]='test%s'%(lines) for k,v in dict1.items(): print k,v
3.默认字典(defaultdict)
defaultdict是对字典的类型的补充,他默认给字典的值设置了一个类型。
有如下值集合 [
11
,
22
,
33
,
44
,
55
,
66
,
77
,
88
,
99
,
90.
..],将所有大于
66
的值保存至字典的第一个key中,将小于
66
的值保存至第二个key的值中。
即: {
'k1'
: 大于
66
,
'k2'
: 小于
66
}
常用方法:
dic={} li=[11,22,33,44,55,66,77,88,99] for item in li: if item>66: if 'k2'in dic.keys(): dic['k2'].append(item) else: dic['k2']=[item,] else: if 'k1' in dic.keys(): dic['k1'].append(item) else: dic['k1']=[item
用默认字典实现
1 import collections 2 value=[11,22,33,44,55,66,77,88,99] 3 dict1=collections.defaultdict(list) 4 for list1 in value: 5 if list1<=66: 6 dict1['k1'].append(list1) 7 else: 8 dict1['k2'].append(list1) 9 print dict1
4、可命名元组(namedtuple)
根据nametuple可以创建一个包含tuple所有功能以及其他功能的类型:
主要用于‘坐标’的表示。用法如下:
1 import collections as coll 2 >>> mytuple=coll.namedtuple('mytuple',['x','y']) 3 >>> n=mytuple(1,2) 4 >>> n 5 mytuple(x=1, y=2) 6 >>> n.x 7 1 8 >>> n.y 9 2
5、双向队列(deque)
一个线程安全的双向队列:双向队列我们可以理解为两个栈底相连的栈,和队列的先进先出不同,元素可以从这个队列的两端分别加入或者删除值。
1 a=coll.deque() 2 a.append(1) 3 a.append(2) 4 a.append(3) 5 print a.pop() 6 3 7 print a.popleft() 8 1