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
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'])
Counter:用于计算给定字符串中同一个字符出现的次数,最简单的用法如下
1 c = dict(Counter('abcdeabcdabcaba')) 2 print(c) 3 -------------------------------------------------------------------------------------- 4 {'a': 5, 'b': 4, 'c': 3, 'd': 2, 'e': 1}
其他用法: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']
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'

浙公网安备 33010602011771号