python collections模块讲解

collection模块是python内置的一个模块

namedtuple
tuple表示不变的集合,即一个点可以由二维坐标可以表示:
from collections import namedtuple
point=namedtuple('name',['X','Y'])
p=point(1,2)
print(p.X)
namedtuple是一个函数,它用来创建一个自定义的tuple对象,并且规定了tuple元素的个数,并可以用属性而不是索引来引用tuple的某个元素。

deque
使用list存储数据时,按索引访问元素很快,但是插入和删除元素就很慢了,因为list是线性存储,数据量大的时候,插入和删除效率很低。deque是为了高效实现插入和删除操作的双向列表,适合用于队列和栈:
deque除了实现list的append()pop()外,还支持appendleft()popleft(),这样就可以非常高效地往头部添加或删除元素
from collections import deque
q=deque(['a','b','c'])
q.append('x')
q.appendleft('y')
print(q)

defaultdict
使用dict时,如果引用的Key不存在,就会抛出KeyError。如果希望key不存在时,返回一个默认值,就可以用defaultdict
from collections import defaultdict
dd=defaultdict(lambda :'N/A')
dd['key1']='aa'
print(dd['key1'])#aa
print(dd['key2'])#N/A

OrderedDict
使用dict时,Key是无序的。在对dict做迭代时,我们无法确定Key的顺序.
如果要保持Key的顺序,可以用OrderedDict
注意,OrderedDict的Key会按照插入的顺序排列,不是Key本身排序:
OrderedDict可以实现一个FIFO(先进先出)的dict,当容量超出限制时,先删除最早添加的Key

Counter
Counter是一个简单的计数器,例如,统计字符出现的个数:
from collections import Counter
s = '''A Counter is a dict subclass for counting hashable objects. It is an unordered collection where elements are stored as dictionary keys and their counts are stored as dictionary values. Counts are allowed to be any integer value including zero or negative counts. The Counter class is similar to bags or multisets in other languages.'''.lower()
css=Counter(s)

 

c = Counter()
for ch in 'programming':
    c[ch] = c[ch] + 1
print(c)
 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值