Python的collections简单用法

1、Collections

collections 实现了特定目标的容器,以提供Python标准内建容器 dict、list、set、tuple 的替代选择。

  • Counter:字典的子类,提供了可哈希对象的计数功能;
  • defaultdict:字典的子类,提供了一个工厂函数,为字典查询提供了默认值;
  • OrderedDict:字典的子类,保留了他们被添加的顺序;
  • namedtuple:创建命名元组子类的工厂函数;
  • deque:类似列表容器,实现了在两端快速添加(append)和弹出(pop);
  • ChainMap:类似字典的容器类,将多个映射集合到一个视图里面。

 

2、OrderedDict

使用dict时,Key是无序的。在对dict做迭代时,我们无法确定Key的顺序。

使他们添加顺序的字典对象。可以用OrderedDict

 

3、Deque

collections.deque返回一个新的双向队列对象,从左到右初始化(用方法 append()) ,从 iterable (迭代对象) 数据创建。如果 iterable 没有指定,新队列为空。
collections.deque队列支持线程安全,对于从两端添加(append)或者弹出(pop),复杂度O(1)。
虽然list对象也支持类似操作,但是这里优化了定长操作(pop(0)、insert(0,v))的开销。
如果 maxlen 没有指定或者是 None ,deques 可以增长到任意长度。否则,deque就限定到指定最大长度。一旦限定长度的deque满了,当新项加入时,同样数量的项就从另一端弹出。

deque方法:

  1. append(x):添加x到右端
  2. appendleft(x):添加x到左端
  3. clear():清楚所有元素,长度变为0
  4. copy():创建一份浅拷贝
  5. count(x):计算队列中个数等于x的元素
  6. extend(iterable):在队列右侧添加iterable中的元素
  7. extendleft(iterable):在队列左侧添加iterable中的元素,注:在左侧添加时,iterable参数的顺序将会反过来添加
  8. index(x[,start[,stop]]):返回第 x 个元素(从 start 开始计算,在 stop 之前)。返回第一个匹配,如果没找到的话,升起 ValueError 。
  9. insert(i,x):在位置 i 插入 x 。注:如果插入会导致一个限长deque超出长度 maxlen 的话,就升起一个 IndexError 。
  10. pop():移除最右侧的元素
  11. popleft():移除最左侧的元素
  12. remove(value):移去找到的第一个 value。没有抛出ValueError
  13. reverse():将deque逆序排列。返回 None 。
  14. maxlen:队列的最大长度,没有限定则为None。

 

4、Counter

Counter是一个dict子类,主要是用来对你访问的对象的频率进行计数。
常用方法:

  1. elements():返回一个迭代器,每个元素重复计算的个数,如果一个元素的计数小于1,就会被忽略。
  2. most_common([n]):返回一个列表,提供n个访问频率最高的元素和计数
  3. subtract([iterable-or-mapping]):从迭代对象中减去元素,输入输出可以是0或者负数
  4. update([iterable-or-mapping]):从迭代对象计数元素或者从另一个 映射对象 (或计数器) 添加。

 

5、Defaultdict

collections.defaultdict(default_factory)为字典的没有的key提供一个默认的值。参数应该是一个函数,当没有参数调用时返回默认值。如果没有传递任何内容,则默认为None。使用dict时,如果引用的Key不存在,就会抛出KeyError。如果希望key不存在时,返回一个默认值,就可以用defaultdict。

 

6、ChainMap

一个 ChainMap 将多个字典或者其他映射组合在一起,创建一个单独的可更新的视图。 如果没有 maps 被指定,就提供一个默认的空字典 。ChainMap是管理嵌套上下文和覆盖的有用工具。

 

7、Namedtuple

namedtuple 是 元组(tuple)类型的子类,所以本质上它还是一个元组类型,继承了元组所有的的特性,namedtuple 特别之处在于你可以通过名字来访问元组中的元素,类似字典,通过key来访问value。

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值