一、collections模块的作用
collections模块在python的基本数据类型之外给我们提供了额外的五种数据类型,以便我们更加方便的解决一些问题,它们分别是namedtuple、deque、Counter、OrderDict、defaulrdict。
二、namedtupie、deque、counter、orderDict、defaulrdict用法。
1,、namedtupie:也是元祖,与普通元祖不同的是这个元祖中的每个元素都有名字,我们在取值的时候使用元素的名字取值的。
1 1 from collections import namedtupleView Code
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
2、deque:是一个双向队列,一般的队列都是从右边进左边出,双向队列可以左进左出、右进右出、左进右出、右进左出
>>> from collections import dequeView Code
>>> q = deque(['a', 'b', 'c'])
>>> q.append('x')
>>> q.appendleft('y')
>>> q
deque(['y', 'a', 'b', 'c', 'x'])
deque除了实现list的append()
和pop()
外,还支持appendleft()
和popleft()
,这样就可以非常高效地往头部添加或删除元素。
3、 OrderDict:一个有序的字典,它的key值是按照插入的顺序固定排列的,不像普通字典一样key值的排列是无序的
1 复制代码View Code
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']
4、 defaultdict:在定义默认值字典时我们可以给它一个默认值,当我们取的key值不存在时它就会把这个默认值返回给我们,而不像普通字典一样报错,但是这个默认值必须时可以调用的比如一些工厂函数list,dict等或者是自定义的函数
1 1 from collections import defaultdictView Code
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'
5、counter::用于计算给定字符串中同一个字符出现的次数
1 c = Counter('abcdeabcdabcaba')View Code
2 print c
3 输出:Counter({'a': 5, 'b': 4, 'c': 3, 'd': 2, 'e': 1})
其他详细内容 http://www.cnblogs.com/Eva-J/articles/7291842.html