collections.Counter 统计频度

将序列传入Counter的构造器,得到Counter对象是元素频度的字典
Counter.most_common(n) 方法的到频度最高的n个元素的列表

** 列表中找到频率出现最高的3个元素, 出现的次数**

from collections import Counter
data = [1, 2, 3, 1, 1, 1, 5, 9, 7, 5, 7, 8]
c = Counter(data)
c.most_common(3)

[(1, 4), (5, 2), (7, 2)]

collections.deque

使用list存储数据时,按索引访问元素很快,但是插入和删除元素就很慢了,因为list是线性存储,数据量大的时候,插入和删除效率很低。
deque是高效实现插入和删除操作的双向列表,适合用于队列和栈,

from collections import deque
q = deque(['a', 'b', 'c'])
q.append('x')
q.appendleft('y')
q
deque(['y', 'a', 'b', 'c', 'x'])

deque除了实现list的append()和pop()外,还支持appendleft()和popleft(),这样就可以非常高效地往头部添加或删除元素。

如何实现用户的历史纪录功能 (存在内存中)

from collections import deque
q = deque( [ ], 5) # 创建个队列
q.append(1)
print(list( q ) )

如何实现用户的历史纪录功能 (存在文件中)
deque是高效实现插入和删除操作的双向列表,适合用于队列和栈,
程序退出之前, 可以用pickle 将队列对象存入文件,再次运行可以将其导入。

import pickle
q = deque( [3, 4, 5, 6, 7] )
pickle.dump( q, open( 'history', 'w') ) picklle.dump(obj, file, protocol=None)对象,文件

pickle.load( open( 'history' )) pickle.load()读文件
输出 deque( [3, 4, 5, 6, 7] )

元组中元组命名, 提高可读性 collections . namedtuple 替代tuple

导入相应模块,namedtuple( “新创建子类名字”, 每个元素的名字),可以利用属性获取相应的值

from collections import namedtuple
students = namedtuple("stu", ["name", "age", "sex", "email"])
stu = students("zhangsan", 18, "男", "1234567@.qq.com")
print(stu)
print(stu.age)

collections . OrderedDict

将字典保存为有序

以 OrderedDict  替代内置字典Dict, 依次将元素存入OrderedDict
from collections import OredereDict
d = OrderdDict() 先创建字典

collections_队列和栈