collection模块引用:from collections import *
1. Counter类(最常用):计数器
counter相当于计数器,是对字典类型的补充,用于统计元素出现的次数,具备字典的所有功能+自己的功能。
- 例子
from collections import *
string = "abcdedgaabbccdd"
out = Counter(string)
print(out)
输出:Counter({'d': 4, 'a': 3, 'b': 3, 'c': 3, 'e': 1, 'g': 1})
2. defaultdict类:默认字典
defaultdict使用工厂函数创建字典,使用的时候不用考虑缺失的key。在使用python原生的数据结构dict的时候,如果用d[key]这样的方式访问,当指定的key不存在时,是会抛出keyerror异常,但是,如果使用defaultdict,只要传入一个默认的工厂方法,那么请求一个不存在的key时,便会调用这个工厂方法使其结果来作为这个key的默认值。
- 例子
from collections import *
members = [
['male', 'John'],
['male', 'Jack'],
['female', 'Lily'],
['male', 'Pony'],
['female', 'Lucy']
]
d= defaultdict(list)
for sex,name in members:
d[sex].append(name)
print(d)
输出:
defaultdict(<class 'list'>, {'male': ['John', 'Jack', 'Pony'], 'female': ['Lily', 'Lucy']})
3. OrderedDict类:有序字典
dict中key是无序的,在做迭代时,无法确认key的顺序。ordereddict是对字典类型的补充,他记住了字典元素添加的顺序。
- 例子
from collections import *
d1 = OrderedDict([('a', 1), ('z', 2), ('c', 3)])
d2 = Counter([('a',1),('z',2),('c',3)])
print(d1)
print(d2)
输出:
4. namedtuple类:可命名元组
tuple是一个不可变集合,namedtuple用来构建一个自定义的tuple对象,并且规定了tuple元素的个数,可通过属性而不是索引来引用tuple的某个元素,我们可以通过namedtuple很方便的自定义一个数据类型,它具有tuple的不变属性又可以根据属性来引用。
- 例子
Point = namedtuple('Point',['x','y'])
p = Point(2,1)
print(p)
print("x = ",p.x)
print("y = ",p.y)
输出:
Point(x=2, y=1)
x = 2
y = 1
5. deque类:双端队列(用的很少)
双端队列(deque)是一种支持向两端高效地插入数据、支持随机访问的容器。它最大的好处就是实现了从队列头部快速增加和取出对象: .popleft(), .appendleft() 。
参考博客
- https://blog.youkuaiyun.com/quanlingtu1272/article/details/96969776?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
- https://blog.youkuaiyun.com/bitcarmanlee/article/details/52735415?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task