collections
【万字长文详解】Python库collections,让你击败99%的Pythoner - 知乎 (zhihu.com)
提供了标准数据结构以外的高级数据结构
子类 | 功能 |
---|---|
Counter | 字典的子类,提供了可哈希对象的计数功能 |
namedtuple() | 创建命名元组子类的工厂函数,生成可以使用名字来访问元素内容的tuple子类 |
deque | 类似列表(list)的容器,实现了在两端快速添加(append)和弹出(pop) |
ChainMap | 类似字典(dict)的容器类,将多个映射集合到一个视图里面 |
OrderedDict | 字典的子类,保存了他们被添加的顺序,有序字典 |
defaultdict | 字典的子类,提供了一个工厂函数,为字典查询提供一个默认值 |
UserDict | 封装了字典对象,简化了字典子类化 |
UserList | 封装了列表对象,简化了列表子类化 |
UserString | 封装了字符串对象,简化了字符串子类化(中文版翻译有误) |
计数器 - Counter
> Counter('gallahad')
Counter({'g': 1, 'a': 3, 'l': 2, 'h': 1, 'd': 1})
> Counter(['red', 'blue', 'red', 'green', 'blue', 'blue'])
Counter({'red': 2, 'blue': 3, 'green': 1})
Counter (除了dict的方法外)有三个方法:
- elements() 返回一个迭代器,其中每个元素将重复出现计数值所指定次。 元素会按首次出现的顺序返回。 如果一个元素的计数值小于1,elements() 将会忽略它。
- most_common(n = None) 返回一个列表,其中包含n个最常见的元素及出现次数,按常见程度由高到低排序。 如果 n 被省略或为None,most_common() 将返回计数器中的所有元素,计数值相等的元素按首次出现的顺序排序,经常用来计算top词频的词语。
- subtract(Counter or other...) 从迭代对象或映射对象减去元素
> str0 = Counter({'a': 2, 'b': 2, 'c': 2, 'd': 2, 'e': 1})
> str0.subtract('abcd')
> str0
Counter({'a': 1, 'b': 1, 'c': 1, 'd': 1, 'e': 1}
> c = Counter(a=4, b=2, c=0, d=-2), d = Counter(a=1, b=2, c=3, d=4)
> c.subtract(d)
> c
Counter({'a': 3, 'b': 0, 'c': -3, 'd': -6})
Counter 也支持 +
-
&
|
运算
双向队列 - deque
append()
appendleft()
clear()
copy() 创建一份浅拷贝
count(x) 计算 deque 中元素等于 x 的个数。