标签:计数器 collections 统计 python
collections是Python内建的一个集合模块,提供了许多有用的集合类。
1.Counter 计数器
Counter是一个简单的计数器,例如,统计字符出现的个数:
>>> import collections
>>> obj = collections.Counter(‘applebanana‘)
>>> print(obj)
Counter({‘a‘: 4, ‘n‘: 2, ‘p‘: 2, ‘e‘: 1, ‘l‘: 1, ‘b‘: 1})
2.OrderedDict 有序字典
使用dict时,Key是无序的。在对dict做迭代时,我们无法确定Key的顺序。
如果要保持Key的顺序,可以用OrderedDict:
>>> od = collections.OrderedDict()
>>> od[‘k2‘] =‘k2‘
>>> od[‘k1‘] = ‘k1‘
>>> od
OrderedDict([(‘k2‘, ‘k2‘), (‘k1‘, ‘k1‘)])
或
>>> od = collections.OrderedDict([(‘k2‘,‘v2‘),(‘k1‘,‘v1‘)])
>>> od
OrderedDict([(‘k2‘, ‘v2‘), (‘k1‘, ‘v1‘)])
3.defaultdict 默认字典
默认字典会给字典的值设置一个默认类型
import collections
num = [11,22,33,44,55,66,77,88,99]
#为my_dic字典的值添加默认list类型
my_dic = collections.defaultdict(list)
for i in num:
if i > 66:
my_dic[‘k1‘].append(i)
else:
my_dic[‘k2‘].append(i)
print(my_dic)
4.namedtuple 可命名元祖
namedtuple是一个函数,它用来创建一个自定义的tuple对象,并且规定了tuple元素的个数,并可以用属性而不是索引来引用tuple的某个元素。
这样一来,我们用namedtuple可以很方便地定义一种数据类型,它具备tuple的不变性,又可以根据属性来引用,使用十分方便
>>>person = collections.namedtuple(‘pp‘,[‘name‘,‘age‘])
>>>p = person(‘apple‘,2)
>>>print(p.name)
>>>print(p.age)
5.deque 双向队列
使用list存储数据时,按索引访问元素很快,但是插入和删除元素就很慢了,因为list是线性存储,数据量大的时候,插入和删除效率很低。
deque是为了高效实现插入和删除操作的双向列表,适合用于队列和栈:
>>> dli = collections.deque([1,2,3])
>>> dli.append(4)
>>> dli
deque([1, 2, 3, 4])
>>> dli.appendleft(5) #appendleft向左插入数据
>>> dli
deque([5, 1, 2, 3, 4])
本文出自 “小新的学习博客” 博客,请务必保留此出处http://oneserver.blog.51cto.com/4776118/1765466
标签:计数器 collections 统计 python
原文地址:http://oneserver.blog.51cto.com/4776118/1765466