Python collections的使用
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的使用相关推荐
- 四种高性能数据类型,Python collections助你优化代码、简洁任务
在这篇文章中,机器学习工程师 George Seif 介绍了 Python collections 模块最受欢迎的四种数据类型以及它们各自的使用方法.这些数据类型可以对代码进行优化,进而实现更简洁的任 ...
- python︱ collections模块(namedtuple/defaultdict/OrderedDict等)
collections有的功能: ['deque', 'defaultdict', 'namedtuple', 'UserDict', 'UserList', 'UserString',\'Count ...
- 一文看懂Python collections模块的高效数据类型
原作: George Seif, 发表于medium.com, 大江狗原创翻译, 并对原文稍作修改. Python的最大优势之一是其广泛的模块和软件包.这将Python的功能扩展到许多受欢迎的领域,包 ...
- python collections模块(数据结构常用模块)计数器Counter 双向队列deque 默认字典defaultdict 有序字典OrderedDict 可命名元组namedtuple
collections 模块----Python标准库,是数据结构常用模块 常用类型有: 计数器(Counter) 双向队列(deque) 默认字典(defaultdict) 有序字典(Ordered ...
- python collections模块_Python 的collections模块
前言: collections是实现了特定目标的容器,以提供python标准内建容器dict,list,set和tuple的替代选择. Counter Counter是一个dict子类,主要是用来对你 ...
- python3 collections模块 tree_第30天: Python collections 模块
by 豆豆 1.简介 collections 是 python 的内置模块,提供了很多方便且高性能的关于集合的操作,掌握这些知识有助于提高代码的性能和可读性. 2.常用功能 2.1 namedtupl ...
- defaultdict python3,Python collections.defaultdict() 与 dict的使用和区别|python3教程|python入门|python教程...
https://www.xin3721.com/eschool/python.html 在Python里面有一个模块collections,解释是数据类型容器模块.这里面有一个collections. ...
- python collections 模块中的 deque
collections.deque介绍 collections 是 python 内建的一个集合模块,里面封装了许多集合类,其中队列相关的集合只有一个:deque. deque 是双边队列(doubl ...
- python collections(容器)模块
原文:http://docs.pythontab.com/interpy/collections/collections/ 容器(Collections) Python附带一个模块,它包含许多容器数据 ...
最新文章
- DataGuard physical standby创建与维护
- Android程序ToDoList增加配置项页面
- mysql 编译_mysql 5.7 编译——VS2017
- 强弩之末,势不能穿鲁缟
- Boost:计时系的测试
- java类名变量_java类名操作变量方法
- 最长回文子串(Longest Palindromic Substring)
- 若依部署上线之后验证码不显示的解决方法之一
- ORA-16019: cannot use LOG_ARCHIVE_DEST_1 with LOG_ARCHIVE_DEST or LOG_ARCHIVE_DUPLEX_DEST
- 数论概论学习笔记(一)——勾股数
- 华为云大咖说-庄表伟:架构师的基本功——管理篇
- 罗永浩谈乔纳森离职:乔布斯才是苹果的灵魂设计师
- adb查看某个文件是否存在_android – 使用ADB检查目录是否存在,如果存在则推送文件...
- Windows 10 蓝牙管理页面“添加蓝牙或其他设备“选项点击无响应的解决方案
- 项目管理高手常用的10张图表推荐!(小白也能懂的项目管理)
- 香港传媒高层访团莅临深之蓝参观访问
- 创建型模式Creational Patterns之单例模式singleton
- Python之数据加密与解密及相关操作(hashlib、hmac、random、base64、pycrypto)
- sbc,aac,aptx,ldac蓝牙编码简单介绍。
- 笔记本电脑开wifi设置