python常用模块之collections模块

  一、collections模块的作用

  collections模块在python的基本数据类型之外给我们提供了额外的五种数据类型,以便我们更加方便的解决一些问题,它们分别是namedtuple、deque、Counter、OrderDict、defaulrdict。

 

  二、namedtuple、deque、Counter、OrderDict、defaulrdict的用法

   namedtuple:这也是元祖,但是和普通元祖不同的是这个元祖中的每个元素都有名字,我们在取值的时候是用元素的名字取值的。

   

1 from collections import namedtuple
2 tu=(1,2)
3 Point = namedtuple('Point', ['x', 'y'])
4 p = Point(1, 2) #p=Point(*tu)也可以这样传值
5 print(p.x,p.y)
6 --------------------------------------------------------------------------------------
7 1 2
View Code

  

   deque:是一个双向队列,一般的队列都是从右边进左边出,双向队列可以左进左出、右进右出、左进右出、右进左出

   

 1 from collections import deque
 2 q = deque(['a', 'b', 'c'])
 3 q.append('x')
 4 q.appendleft('y')
 5 print(q)
 6 q.pop()
 7 q.popleft()
 8 print(q)
 9 --------------------------------------------------------------------------------------
10 deque(['y', 'a', 'b', 'c', 'x'])
11 deque(['a', 'b', 'c'])
View Code

 

   Counter:用于计算给定字符串中同一个字符出现的次数,最简单的用法如下

   

1 c = dict(Counter('abcdeabcdabcaba'))
2 print(c)
3 --------------------------------------------------------------------------------------
4 {'a': 5, 'b': 4, 'c': 3, 'd': 2, 'e': 1}
View Code

  其他用法:http://www.cnblogs.com/Eva-J/articles/7291842.html

 

   OrderDict:一个有序的字典,它的key值是按照插入的顺序固定排列的,不像普通字典一样key值的排列是无序的

    

 1 od = OrderedDict([('a', 1), ('b', 2), ('c', 3)])
 2 print(od)
 3 --------------------------------------------------------------------------------------
 4 OrderedDict([('a', 1), ('b', 2), ('c', 3)])
 5 
 6 
 7 
 8 od = OrderedDict()
 9 od['z'] = 1
10 od['y'] = 2
11 od['x'] = 3
12 print(od.keys())
13 --------------------------------------------------------------------------------------
14 ['z', 'y', 'x']
View Code函数

 

   defaultdict:在定义默认值字典时我们可以给它一个默认值,当我们取的key值不存在时它就会把这个默认值返回给我们,而不像普通字典一样报错,但是这个默认值必须时可以调用的比如一些工厂函数list,dict等或者是自定义的函数

   

1 from collections import defaultdict
2 dd = defaultdict(lambda: 'N/A')
3 dd['key1'] = 'abc'
4 print(dd['key1']) # key1存在
5 print(dd['key2']) # key2不存在,返回默认值
6 --------------------------------------------------------------------------------------
7 'abc'
8 'N/A'
View Code

 

   

posted @ 2017-08-07 16:56  魅力宁波  阅读(192)  评论(0)    收藏  举报