python常用模块之collections

时间:2021-06-24 22:22:35

  一、collections模块的作用

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

二、namedtupie、deque、counter、orderDict、defaulrdict用法。

   

   1,、namedtupie:也是元祖,与普通元祖不同的是这个元祖中的每个元素都有名字,我们在取值的时候使用元素的名字取值的。

python常用模块之collectionspython常用模块之collections
1 1  from collections import namedtuple
2 2 Point = namedtuple('Point', ['x', 'y'])
3 3 p = Point(1, 2)
4 4 p.x
5 5 1
6 6 p.y
7 2
View Code

 

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

  

python常用模块之collectionspython常用模块之collections
>>> from collections import deque
>>> q = deque(['a', 'b', 'c'])
>>> q.append('x')
>>> q.appendleft('y')
>>> q
deque([
'y', 'a', 'b', 'c', 'x'])
View Code

     deque除了实现list的append()pop()外,还支持appendleft()popleft(),这样就可以非常高效地往头部添加或删除元素。

 

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

    

python常用模块之collectionspython常用模块之collections
 1 复制代码
2 1 od = OrderedDict([('a', 1), ('b', 2), ('c', 3)])
3 2 print(od)
4 3 --------------------------------------------------------------------------------------
5 4 OrderedDict([('a', 1), ('b', 2), ('c', 3)])
6 5
7 6
8 7
9 8 od = OrderedDict()
10 9 od['z'] = 1
11 10 od['y'] = 2
12 11 od['x'] = 3
13 12 print(od.keys())
14 13 --------------------------------------------------------------------------------------
15 14 ['z', 'y', 'x']
View Code

 

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

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

 

     5、counter::用于计算给定字符串中同一个字符出现的次数

python常用模块之collectionspython常用模块之collections
1 c = Counter('abcdeabcdabcaba')
2 print c
3 输出:Counter({'a': 5, 'b': 4, 'c': 3, 'd': 2, 'e': 1})
View Code
其他详细内容 http://www.cnblogs.com/Eva-J/articles/7291842.html