Python中内置了4种数据类型,包括:list,tuple,set,dict,这些数据类型都有其各自的特点,但是这些特点(比如dict无序)在一定程度上对数据类型的使用产生了约束,在某些使用场景下效率会比较低,比如有时候我们可能需要维护一个有序的字典等情况。

在这种场景下我们可以使用Python内建的collections模块,它包括了很多有用的集合类,合理的使用可以提高我们代码的运行效率。

接下来主要对collections模块中的常用集合类进行介绍,调用collections模块:

from collections import *

defaultdict

dict在使用时,当key值不存在时,直接添加value时会出现错误,使用defaultdict可以很好的规避该错误。defaultdict是对字典类型的补充,它可以给字典的值设置一个类型,当key不存在时可以自动生成相应类型的value。

举例:

from collections import defaultdict

test_data = (

('cat', 2),

('dog', 5),

('sheep', 3),

('cat', 1),

('sheep', 2)

)

test_data_dict = defaultdict(list)

for name, num in test_data:

test_data_dict[name].append(num)

print test_data_dict

orderedDict

在Python3.6之前的字典是无序的,但是有时候我们需要保持字典的有序性,orderDict可以在dict的基础上实现字典的有序性,这里的有序指的是按照字典key插入的顺序来排列,这样就实现了一个先进先出的dict,当容量超出限制时,先删除最早添加的key。

举例:

#orderedDict

original_dict = {'a': 2, 'b': 4, 'c': 5}

for key, value in original_dict.items():

print key, value

ordered_dict = OrderedDict([('a', 2), ('b', 4), ('c', 5)])

for key, value in ordered_dict.items():

print key, value

可以看到orderDict是按照字典创建时的插入顺序来排序。

deque

Python中的list是基于数组实现的,所以,查找容易,但是插入和删除操作时间复杂度较大。

deque就是为了高效实现插入和删除操作的双向列表,适合用于队列和栈,而且线程安全。

list只提供了append和pop方法来从list的尾部插入或者删除元素,deque新增了appendleft/popleft等方法可以更高效的在元素的开头来插入/删除元素。

举例:

from collections import deque

d = deque([1,2,3,4,5])

d.extendleft([0])

print d

d.extend([6,7])

d.popleft()

print d

可以进行双向操作元素,十分方便。

Counter

字典子类,为可以哈希的对象计数。

举例:

from collections import Counter

test_counter_data = ['cat', 'dog', 'sheep', 'cat', 'dog']

counter_data = Counter()

for item in test_counter_data:

counter_data[item] += 1

print counter_data

可以实现对一个对象中的元素进行计数。

namedtuple

元组子类。

我们知道,Python中元组的一个重要特征就是元素不可增删改,而查找tuple元素时一般采取索引。

使用namedtuple(typename, field_name)可以命名tuple中的元素,之后便可使用名字来查找tuple中的值,有点类似于字典中的查找。

举例:

from collections import namedtuple

animal = namedtuple('animal', 'type age')

mark = animal(type='dog', age=2)

print mark.type

使用namedtuple可以提高代码的可读性和文档性。

以上,是collections模块中的常用集合类。

python中collections_Python中的collections模块相关推荐

  1. python中collections_Python中collections模块的基本使用教程

    前言 之前认识了python基本的数据类型和数据结构,现在认识一个高级的:Collections,一个模块主要用来干嘛,有哪些类可以使用,看__init__.py就知道 '''This module ...

  2. Python学习日记(十五) collections模块

    在内置函数(dict.list.set.tuple)的基础上,collections模块还提供了几个其他的数据类型:Counter.deque.defaultdict.namedtuple和Order ...

  3. python namedtuple用法_Python的collections模块中namedtuple结构使用示例

    namedtuple 就是命名的 tuple,比较像 C 语言中 struct.一般情况下的 tuple 是 (item1, item2, item3,...),所有的 item 都只能按照 inde ...

  4. 一. python的collections模块

    一.collections模块 Python拥有一些内置的数据类型,比如str, int, list, tuple, dict等, collections模块在这些内置数据类型的基础上,提供了几个额外 ...

  5. python中counter_Python collections模块中counter()的详细说明,Pythoncollections,之,Counter,详解...

    collections模块 ==> Python标准库,数据结构常用的模块:collections包含了一些特殊的容器,针对Python内置的容器,例如list.dict.set和tuple,提 ...

  6. Python中collections模块

    目录 Python中collections模块:模块实现了特定目标的容器,以提供Python标准内建容器 dict.list.set.tuple 的替代选择. Counter:字典的子类,提供了可哈希 ...

  7. python优雅编程_Python优雅编程——Collections模块中的高性能数据类型

    Python中内置了4 种数据类型,列表(List),元组(Tuple),集合(Set),字典(Dict).这些数据类型都有其各自的特性,但是有些特性,比如字典无序,在一定程度上对数据类型的使用产生了 ...

  8. python collections 模块中的 deque

    collections.deque介绍 collections 是 python 内建的一个集合模块,里面封装了许多集合类,其中队列相关的集合只有一个:deque. deque 是双边队列(doubl ...

  9. Python中Collections模块的Counter容器类使用教程

    Python中Collections模块的Counter容器类使用教程 1.collections模块 collections模块自Python2.4版本开始被引入,包含了dict,set,list, ...

最新文章

  1. Java性能优化指南,及唯品会的实战
  2. android 触摸监听重写_Android监听屏幕的滑动事件
  3. 《碟中谍5》中惊鸿一瞥的步态识别技术,究其神在哪里?
  4. Oracle 游标范例
  5. Pentium的指令系统(1)——Pentium的寻址方式
  6. 唯一索引和逻辑删除冲突
  7. flume学习(九):使用Morphline Interceptor
  8. 世链投研|链游操作指南之MIR4
  9. 路由器运行python脚本_在路由器中运行Python
  10. mysql cmd insecure_看各路神仙如何大战MySQL insecure warning报警有感
  11. 你好 同样在努力的陌生人
  12. 【javascript】收藏本站——添加到浏览器收藏夹
  13. BetaFlight模块设计之十:磁力计任务分析
  14. Python 简易版小工具 | 计算天数
  15. HTML5练习——布局练习01(内含5个基本的css命名规则)
  16. 如何使用Createjs来编写HTML5游戏(二)使用EaselJS处理图片
  17. 授权DNS之Cloudxns的体验
  18. 那些LTE的上行技术
  19. 用超级兔子管理计算机的技巧
  20. YT Saver(网页视频下载软件)官方中文版32位V4.6.0 | 网页万能视频下载神器

热门文章

  1. Linux内存管理【转】
  2. Centos 7 学习之静态IP设置
  3. 1.1.1. Atitit Cocos2d-JS v3.x的问题
  4. Python字典基础
  5. STM32使用以下规则对过滤器编号:
  6. Windows Azure Marketplace入门教学-利用TabLeau Public构建可视化DataMarket应用
  7. vue 添加完数据后刷新页面_页面刷新vuex数据消失
  8. 速卖通关键词挖掘工具_网站优化必备的关键词挖掘工具
  9. 三目运算符字符串拼接
  10. oracle查看字典结构体,Oracle数据字典的实操