collections模块介绍

collections模块是对Python已有数据类型进行了增强

collections模块提供5种增强型数据类型:

  1. Counter 计数器,用于统计元素的数量
  2. OrderDict 有序字典
  3. defaultdict 值带有默认值的字典
  4. namedtuple 可命名元组,通过名字来访问元组元素
  5. deque 双向队列,队列头尾都可以放,也都可以取(与单向队列对比,单向队列只能一头放,另一头取)

Counter类型,计数器

Counter类型,计数器功能,通过字典形式统计元素出现的次数。

看示例,就知道怎么用:




dict python 统计value python dict计数_数据类型


Counter数据类型是基于Python dict类型实现类。

OrderDict类型,有序字典

Python dict数据类型key是无序的,而Collections模块提供一个有序字典OrderDict数据类型

OrderDict的用法跟dict基本相同,比如keys(), values(), clear()等

看示例,就知道怎么用:


dict python 统计value python dict计数_数据类型_02


OrderDict是如何做到有序字典的?答:在已有字典数据类型基础上,通过列表或者元组来维护key,继而保证字典key的次序

defaultdict类型,值带有默认类型的字典

defaultdict类型还是字典类型,只不过这个字典类型的value可以设置一个默认类型。

看一下defaultdict类型使用场景:如下例,将男性女性分开,所有男性放到male中,所有女性放放到female中,

常规做法:


dict python 统计value python dict计数_数据类型_03


如果使用defaultdict就会简单很多:


dict python 统计value python dict计数_元组_04


namedtuple类型,可命名元组

namedtuple类型,即可命名元组,可以给元组每个元素起一个别名,可通过别名访问元组中对应的元素,增强访问元组的可读性。

看示例,就知道怎么用:


dict python 统计value python dict计数_数据类型_05


deque类型,双向队列

deque类型,即双向队列。

队列分为:

  • 单向队列(只能从一边放,从另外一边取),如Python Queue内置模块
  • 双向队列(两头都可以放,也都可以取),如collections.deque

deque很多用法跟list相同,比如count,index等,这里列出几个特别的。看示例,就知道怎么用:


dict python 统计value python dict计数_元组_06


总结

了解collections模块这五个增强型数据类型,你会发现,这5种增强型数据类型是基于Python已有数据结构进行封装而得到。 熟练使用collections模块,让你的代码更加pythonic!