collections模块介绍
collections模块是对Python已有数据类型进行了增强
collections模块提供5种增强型数据类型:
- Counter 计数器,用于统计元素的数量
- OrderDict 有序字典
- defaultdict 值带有默认值的字典
- namedtuple 可命名元组,通过名字来访问元组元素
- deque 双向队列,队列头尾都可以放,也都可以取(与单向队列对比,单向队列只能一头放,另一头取)
Counter类型,计数器
Counter类型,计数器功能,通过字典形式统计元素出现的次数。
看示例,就知道怎么用:
Counter数据类型是基于Python dict类型实现类。
OrderDict类型,有序字典
Python dict数据类型key是无序的,而Collections模块提供一个有序字典OrderDict数据类型
OrderDict的用法跟dict基本相同,比如keys(), values(), clear()等
看示例,就知道怎么用:
OrderDict是如何做到有序字典的?答:在已有字典数据类型基础上,通过列表或者元组来维护key,继而保证字典key的次序
defaultdict类型,值带有默认类型的字典
defaultdict类型还是字典类型,只不过这个字典类型的value可以设置一个默认类型。
看一下defaultdict类型使用场景:如下例,将男性女性分开,所有男性放到male中,所有女性放放到female中,
常规做法:
如果使用defaultdict就会简单很多:
namedtuple类型,可命名元组
namedtuple类型,即可命名元组,可以给元组每个元素起一个别名,可通过别名访问元组中对应的元素,增强访问元组的可读性。
看示例,就知道怎么用:
deque类型,双向队列
deque类型,即双向队列。
队列分为:
- 单向队列(只能从一边放,从另外一边取),如Python Queue内置模块
- 双向队列(两头都可以放,也都可以取),如collections.deque
deque很多用法跟list相同,比如count,index等,这里列出几个特别的。看示例,就知道怎么用:
总结
了解collections模块这五个增强型数据类型,你会发现,这5种增强型数据类型是基于Python已有数据结构进行封装而得到。 熟练使用collections模块,让你的代码更加pythonic!