python之collection模块

collections 是python内建的一个集合模块。

namedtuple可以很方便的定义一种数据类型,他具备tuple的不可变性,也可以根据属性来引用,非常方便。

1
2
3
4
5
from collections import  namedtuple
point = namedtuple('p',['x','y'])
= point(1,2)
print(p.x) #1
print(p.y) #2
# namedtuple('名称', [属性list]):
Circle = namedtuple('Circle', ['x', 'y', 'r'])

deque可以高效的实现插入和删除的双向列表,适用于队列和栈。

1
2
3
4
5
6
7
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。

1
2
3
4
5
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本身排序。

1
2
3
4
5
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)
1
输出:Counter({'a'5'b'4'c'3'd'2'e'1})
posted @ 2019-08-01 14:03  不夜男人  阅读(591)  评论(0编辑  收藏  举报