python第三天---collections类

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
原文地址:https://www.cnblogs.com/chushiyaoyue/p/5027928.html