码迷,mamicode.com
首页 > 其他好文 > 详细

第三天---collections类

时间:2015-12-09 00:08:02      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:

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 k2in 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)

一个线程安全的双向队列:双向队列我们可以理解为两个栈底相连的栈,和队列的先进先出不同,元素可以从这个队列的两端分别加入或者删除值。

a=coll.deque()
a.append(1)
a.append(2)
a.append(3)
print a.pop()
3
print a.popleft()
1

 

第三天---collections类

标签:

原文地址:http://www.cnblogs.com/chushiyaoyue/p/5027928.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!