collections是Python内建的一个集合模块,提供了许多有用的集合类。

本文将介绍以下几种方法:

namedtuple

Counter()

deque

OrderedDict

一、namedtuple

namedtuple是一个函数,它用来创建一个自定义的tuple对象,并且规定了tuple元素的个数,可以用属性而不是索引来引用tuple的某个元素。

因为tuple是不可变类型,所以用namedtuple定义出来的对象经过初始化以后,对象的属性是不可以改变的。

>>> from collections import namedtuple
>>> Stu = namedtuple("Student",["name","age","score"])
>>> s = Stu("张三",17,450)
>>> s
Student(name='张三', age=17, score=450)
>>> s.name
'张三'
>>> s.score
450
>>> s.age
17
>>> s.age=30
Traceback (most recent call last):File "<pyshell#79>", line 1, in <module>s.age=30
AttributeError: can't set attribute
>>>

  验证对象s是Stu的对象,也是tuple的一种子类

>>> isinstance(s,Stu)
True
>>> isinstance(s,tuple)
True

  同样的,如果要表示一个四边形的宽高:

>>> TR = namedtuple("TR",["width","height"])
>>> t = TR(10,20)
>>> t
TR(width=10, height=20)
>>> t.width
10
>>> t.height
20

二、Counter()

Counter是一个简单的计数器,用来统计一个字符串中每个字符出现的次数。

>>> from collections import Counter
>>> c = Counter()
>>> c
Counter()
>>> for x in "whoami I am you":c[x] += 1
>>> c
Counter({' ': 3, 'o': 2, 'a': 2, 'm': 2, 'w': 1, 'h': 1, 'i': 1, 'I': 1, 'y': 1, 'u': 1})
>>> for x in c:print(x,c[x])
w 1
h 1
o 2
a 2
m 2
i 13
I 1
y 1
u 1

  用c.key排序再删除:

>>> for x in sorted(c.keys()):print(x,c[x])3
I 1
a 2
h 1
i 1
m 2
o 2
u 1
w 1
y 1

  

三、deque

使用list存储数据时,按索引访问元素很快,但是插入和删除元素就很慢了,因为list是线性存储,数据量大的时候,插入和删除效率很低。

deque是高效实现插入和删除操作的双向list,适合用于栈和队列

>>> from collections import deque
>>> l = [1,4,9,-10]
>>> q = deque(l)
>>> q
deque([1, 4, 9, -10])
>>> q.append(100)
>>> q.pop()
100
>>> q.appendleft(0)
>>> q
deque([0, 1, 4, 9, -10])
>>> q.popleft()
0
>>> q
deque([1, 4, 9, -10])

 除了实现list的append()pop()外,还支持appendleft()popleft(),可以非常高效地往头部添加或删除元素。

四、OrderedDict

使用dict时,Key是无序的。如果要保持Key的插入顺序,可以用OrderedDict,OrderedDict的Key会按照插入的顺序返回,不是Key本身排序。

>>> od = OrderedDict()
>>> od['z'] = 1
>>> od['y'] = 2
>>> od['x'] = 3
>>> list(od.keys()) # 按照插入的Key的顺序返回
['z', 'y', 'x']

  

转载于:https://www.cnblogs.com/ldy-miss/p/8643356.html

Python collections的使用相关推荐

  1. 四种高性能数据类型,Python collections助你优化代码、简洁任务

    在这篇文章中,机器学习工程师 George Seif 介绍了 Python collections 模块最受欢迎的四种数据类型以及它们各自的使用方法.这些数据类型可以对代码进行优化,进而实现更简洁的任 ...

  2. python︱ collections模块(namedtuple/defaultdict/OrderedDict等)

    collections有的功能: ['deque', 'defaultdict', 'namedtuple', 'UserDict', 'UserList', 'UserString',\'Count ...

  3. 一文看懂Python collections模块的高效数据类型

    原作: George Seif, 发表于medium.com, 大江狗原创翻译, 并对原文稍作修改. Python的最大优势之一是其广泛的模块和软件包.这将Python的功能扩展到许多受欢迎的领域,包 ...

  4. python collections模块(数据结构常用模块)计数器Counter 双向队列deque 默认字典defaultdict 有序字典OrderedDict 可命名元组namedtuple

    collections 模块----Python标准库,是数据结构常用模块 常用类型有: 计数器(Counter) 双向队列(deque) 默认字典(defaultdict) 有序字典(Ordered ...

  5. python collections模块_Python 的collections模块

    前言: collections是实现了特定目标的容器,以提供python标准内建容器dict,list,set和tuple的替代选择. Counter Counter是一个dict子类,主要是用来对你 ...

  6. python3 collections模块 tree_第30天: Python collections 模块

    by 豆豆 1.简介 collections 是 python 的内置模块,提供了很多方便且高性能的关于集合的操作,掌握这些知识有助于提高代码的性能和可读性. 2.常用功能 2.1 namedtupl ...

  7. defaultdict python3,Python collections.defaultdict() 与 dict的使用和区别|python3教程|python入门|python教程...

    https://www.xin3721.com/eschool/python.html 在Python里面有一个模块collections,解释是数据类型容器模块.这里面有一个collections. ...

  8. python collections 模块中的 deque

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

  9. python collections(容器)模块

    原文:http://docs.pythontab.com/interpy/collections/collections/ 容器(Collections) Python附带一个模块,它包含许多容器数据 ...

最新文章

  1. DataGuard physical standby创建与维护
  2. Android程序ToDoList增加配置项页面
  3. mysql 编译_mysql 5.7 编译——VS2017
  4. 强弩之末,势不能穿鲁缟
  5. Boost:计时系的测试
  6. java类名变量_java类名操作变量方法
  7. 最长回文子串(Longest Palindromic Substring)
  8. 若依部署上线之后验证码不显示的解决方法之一
  9. ORA-16019: cannot use LOG_ARCHIVE_DEST_1 with LOG_ARCHIVE_DEST or LOG_ARCHIVE_DUPLEX_DEST
  10. 数论概论学习笔记(一)——勾股数
  11. 华为云大咖说-庄表伟:架构师的基本功——管理篇
  12. 罗永浩谈乔纳森离职:乔布斯才是苹果的灵魂设计师
  13. adb查看某个文件是否存在_android – 使用ADB检查目录是否存在,如果存在则推送文件...
  14. Windows 10 蓝牙管理页面“添加蓝牙或其他设备“选项点击无响应的解决方案
  15. 项目管理高手常用的10张图表推荐!(小白也能懂的项目管理)
  16. 香港传媒高层访团莅临深之蓝参观访问
  17. 创建型模式Creational Patterns之单例模式singleton
  18. Python之数据加密与解密及相关操作(hashlib、hmac、random、base64、pycrypto)
  19. sbc,aac,aptx,ldac蓝牙编码简单介绍。
  20. 笔记本电脑开wifi设置

热门文章

  1. rpm遇到的坑-与VMP冲突
  2. ubuntu16.04(其他版本也可)批量修改图片名---shell编程
  3. bzoj 3238: [Ahoi2013]差异
  4. Mysql通过一个限制条件,查出多条不同的记录
  5. xhtml html
  6. magento导入导出Custom Options, Tier Prices and Grouped Products
  7. YUI3学习笔记 ( 8 )
  8. 请注意调整好自己的心态
  9. 龙芯笔记本可能以闹剧收场
  10. (42)Verilog HDL 打两拍设计