Python之collections类

写在前面

之前手写在笔记本上的,整理到这里,以免笔记丢失。

这里也主要是介绍有这些类,主要是了解其功能作用,具体使用方法再另寻搜索。

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修改时,只在第一个映射上修改。

  • 19
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值