collections 是python内建的一个集合模块。
namedtuple可以很方便的定义一种数据类型,他具备tuple的不可变性,也可以根据属性来引用,非常方便。
from collections import namedtuple
point = namedtuple('p',['x','y'])
p = point(1,2)
print(p.x) #1
print(p.y) #2
# namedtuple('名称', [属性list]):
Circle = namedtuple('Circle', ['x', 'y', 'r'])
deque可以高效的实现插入和删除的双向列表,适用于队列和栈。
from collections import deque
q= deque(['a','b','c'])
q.append('x')
q.appendleft('y')
print(q)
#deque(['y', 'a', 'b', 'c', 'x'])
defaultdict
使用dict时,如果key不存在,则抛出KeyError,如果希望key不存在时,返回一个默认值,可以用defaultdict。
from collections import defaultdict
dic = defaultdict(lambda :'N/A')
dic['k1'] = 'abc'
print(dic['k1']) #‘abc’
print(dic['k2']) #N/A
OrderedDict
使用dict时,key是无序的,如果要保证key的顺序,可以用OrderedDict。OrderedDict的key是按照插入的顺序排列,不是key本身排序。
from collections import OrderedDict
dic = dict([('a',1),('b',2),('c',3)])
dic1 = OrderedDict([('a',1),('b',2),('c',3)])
print(dic.keys()) #dict_keys(['a', 'b', 'c'])
print(dic1.keys()) #odict_keys(['a', 'b', 'c'])
Counter是一个简单的计数器,目的是用来跟踪值出现的次数。它是一个无序的容器类型,以字典的键值对形式存储。其中元素为key,个数为value. 计数值可以是任意的interger(含0和负数)
from collections import Counter
c = Counter('abcdeabcdabcaba')
print(c)
输出:Counter({'a': 5, 'b': 4, 'c': 3, 'd': 2, 'e': 1})