写在前面
之前手写在笔记本上的,整理到这里,以免笔记丢失。
这里也主要是介绍有这些类,主要是了解其功能作用,具体使用方法再另寻搜索。
namedtuple | 创建命名元组子类的工厂函数,生成可用名字访问元素内容的tuple子类 |
deque | 类似于list,实现两端快速添加(append)和弹出(pop) |
ChainMap | 类似于dict,多个映射集合到一个视图里 |
Counter | 字典子类,提供了可哈希对象的计数功能 |
OrderedDict | 字典子类,保留添加顺序,有序字典 |
defaultdict | 字典子类,工厂函数,为字典查询提供默认值 |
UserDict | 封装字典对象 |
UserList | 封装列表对象 |
UserString | 封装字符串对象 |
一、Counter
计数器,为dict的子类。用于计数可哈希对象。除了常用的字典方法外,还有以下方法:
1、elements()
返回一个迭代器,每个元素将重复出现计数值所指定的次数,若元素计数小于1,则忽略,例如:
c = Counter(a=4, b=2, c=0, d=-2)
list(c.elements()) --> [a, a, a, a, b, b]
2、most_common()
返回一个列表,包含n个最常见的元素及出现次数,按照常见程度由高到低排序。
n省略或者是为None时,则返回所有元素。
计数相等则按照元素首次出现的顺序排序。
3、subtract()
从迭代对象或映射对象中减去元素,例如:
c = Counter(a=4, b=2, c=0)
d = Counter(a=1, b=2, c=1)
c.subtract(d)
c ==> Counter({a=3, b=0, c=-1})
4、未实现的字典方法
对于所有的字典方法,以下方法Conter不包含
- fromKeys(iterable)
- update([iterable or mapping]),从一个迭代对象或另一个映射中添加,非数值替换。
5、数学操作
+ | 两个计数器的并集(同key的value相加) |
- | 两个计数器的交集(同key的value相减,且只展示大于0的计数) |
& | 两个计数器同key的min(只针对同key的) |
| | 两个计数器同key的max(只针对同key的) |
单目+ | 更改计数的正负,并只展示大于0的计数 |
单目- |
二、deque
双向队列,可快速从两端追加和推出,是双向链表。
append()、appendleft() | 在右侧添加、在左侧添加 |
clear() | 清除 |
copy() | 浅拷贝 |
count(x) | 统计队列中某X的个数 |
extend()、extendleft() | 右侧拓展、左侧拓展(拓展对象的倒序) |
index() | 同list |
insert() | |
reverse() | |
remove(value) | |
pop()、popleft() | 右侧弹出、左侧弹出,若无元素则报错 |
rotate(n=1) | 向右循环n步,若n小于0,则左循环 |
maxlen | 定义deque的最大尺寸,如: d = deque(maxlen = 3) for i in range(20): d.append(i) d == > deque([17, 18, 19]) |
三、OrderedDict
有序字典,类似于常规字典,也可以进行一些排序操作。
- popitem(last = True)
可接受一个参数来移除并返回一个键值对
last = True,LIFO,后进先出;last = Flase,FIFO,先进先出。
- move_to_end(key, last=True / False)
将一个已存在的key移动到有序字典的任一端。如果last为True(默认值),则移动到末尾,如果last为False,则移动到开头。如果key不存在,引发KeyError
- reverse()反转
四、namedtuple
可命名元组(有点像pandas里面的dataframe)
namedtuple(typename, field_names, *, verbose = False, rename = False, module = None)
typename | 指定所创建tuple子类的类名,相当于用户定义一个新类 |
field_names | 字符串序列,也可以使用单个字符串代表所有字段名,多个字段用空格和逗号隔开 |
verbose | 设为True时,对象在创建时便会被打印 |
rename | 设为True时,无效字段名会替换为位置名(无效指关键词或者是重复词) |
module | 设置该参数,该类就会在该模型下 |
五、defaultdict
默认字典,使用字典时,若key不存在时便会报错,若希望key不存在时返回一个默认值,便可以使用默认值。
defaultdict([default_factor[,...]])
若key不存在,则会返回default_factor的默认:
- 设置default_factor为int,可用于计数;
- 设置default_factor为set,可用于构建set集合;
- 设置default_factor为list,可用于构建list列表;
六、ChainMap
映射链,最基本的使用,合并两个或者多个字典,是基于多字典的可更新视图,其特性为:
- 从第一个映射开始查找,找到后便不再继续查找;
- 更新原始映射时,只操作第一个。
- 支持所有字典方法。
注意:其为可更新视图,当修改其中某个映射信息时,该ChainMap也变化,但若针对ChainMap修改时,只在第一个映射上修改。