标准库之collections
collections 模块----Python标准库,是数据结构常用模块
常用类型有:
计数器(Counter) dict的子类,计算可hash的对象;
双端队列(deque) 类似于list的容器,可以快速的在队列头部和尾部添加、删除元素;
默认字典(defaultdict) dict的子类,可以调用提供默认值的函数;
有序字典(OrderedDict) dict的子类,可以记住元素的添加顺序;
可命名元组(namedtuple) 可以创建包含名称的tuple;
1 #获取元素个数,返回字典
2
3 >>> from collections import Counter
4 >>> str='12312312312'
5 >>> Counter(str)
6 Counter({'1': 4, '2': 4, '3': 3})
7 >>> dict(Counter(str))
8 {'1': 4, '2': 4, '3': 3}
9 >>> l = [1,2,3,4,5]
10 >>> Counter(l)
11 Counter({1: 1, 2: 1, 3: 1, 4: 1, 5: 1})
12 >>> d={'d':4,'e':2,'c':7}
13 >>> Counter(d)
14 Counter({'c': 7, 'd': 4, 'e': 2})
>>> Counter('what do you think you are good').most_common(3)
[(' ', 6), ('o', 5), ('h', 2)]
subtract(),从一个可迭代对象中或者另一个映射(或counter)中,元素相减,类似于dict.update(),但是subtracts 数目而不是替换它们,输入和输出都有可能为0或者为负;
而update() 为相加
>>> c=Counter({'a':3,'b':4,'c':1,'d':-2})
>>> d=Counter({'a':1,'b':2,'c':3,'d':4})
>>> c.substract(d)
>>> c
Counter({'a': 2, 'b': 2, 'c': -2, 'd': -6})
namedtuple
是一个函数,它用来创建一个自定义的tuple
对象,并且规定了tuple
元素的个数,并可以用属性而不是索引来引用tuple
的某个元素。
这样一来,我们用namedtuple
可以很方便地定义一种数据类型,它具备tuple的不变性,又可以根据属性来引用,使用十分方便。
# 命名元组
# from collections import namedtuple
#
# p = namedtuple('point', ['x', 'y'])
# p1 = p(4,3)
# p2 = p(3,4)
# print(p1.x)
# print(p2.y)
# print(p(4,3)) # 双端队列
大部分列表的方法在这里也适用
# from collections import deque
# l = [1,2]
# dq = deque(l)
# dq.append(3) # 将3添加到dq的右侧;
# dq.appendleft(0) # 添加到左侧
# dq.insert(4,5)
# print(dq.pop()) # 移除和返回deque中最右侧的元素
# print(dq.popleft()) # 移除和返回deque中最左侧的元素,
# print(dq)
# dq.clear() # 清零,元素长度为0
# dq.count(2) # 返回元素的个数
# # 有序的字典
# from collections import OrderedDict
#
# od = OrderedDict([('a', 1), ('b', 2), ('c', 3)])
# print(od)
# print(od['b'])
# for i in od.items():
# print(i)
defaultdict
使用dict
时,如果引用的Key不存在,就会抛出KeyError
。如果希望key不存在时,返回一个默认值,就可以用defaultdict
:
注意默认值是调用函数返回的,而函数在创建defaultdict
对象时传入。
除了在Key不存在时返回默认值,defaultdict
的其他行为跟dict
是完全一样的。
# 默认字典 # from collections import defaultdict
# d = defaultdict(lambda : 0)
# print(d['a']) # 没有a这个键,返回0
标准库之collections的更多相关文章
- Python3标准库:collections容器数据类型
1. collections容器数据类型 collections模块包含除内置类型list.dict和tuple以外的其他容器数据类型. 1.1 ChainMap搜索多个字典 ChainMap类管理一 ...
- python标准库:collections和heapq模块
http://blog.csdn.net/pipisorry/article/details/46947833 python额外的数据类型.collections模块和heapq模块的主要内容. 集合 ...
- python标准库之collections介绍
collections----容器数据类型 collections模块包含了除list.dict.和tuple之外的容器数据类型,如counter.defaultdict.deque.namedtup ...
- 【python】Python标准库defaultdict模块
来源:http://www.ynpxrz.com/n1031711c2023.aspx Python标准库中collections对集合类型的数据结构进行了很多拓展操作,这些操作在我们使用集合的时候会 ...
- collections标准库
collections标准库 之前Python的第三方库用的一直很舒服,现在突然发现标准库也有collections这样的神器,可以补充list.set.dict以外的应用 1. namedtuple ...
- Python标准库——collections模块的Counter类
1.collections模块 collections模块自Python 2.4版本开始被引入,包含了dict.set.list.tuple以外的一些特殊的容器类型,分别是: OrderedDict类 ...
- python学习笔记系列----(八)python常用的标准库
终于学到了python手册的最后一部分:常用标准库.这部分内容主要就是介绍了一些基础的常用的基础库,可以大概了解下,在以后真正使用的时候也能想起来再拿出来用. 8.1 操作系统接口模块:OS OS模块 ...
- 【循序渐进学Python】11.常用标准库
安装完Python之后,我们也同时获得了强大的Python标准库,通过使用这些标准库可以为我们节省大量的时间.这里是一些常用标准库的简单说明.更多的标准库的说明,可以参考Python文档 sys 模块 ...
- Python标准库映射类型与可散列数据类型的关系
这里有两个概念似懂非懂,在这里明确一下: 映射类型: Python>3.2中,collections.abc模块有Mapping和MutableMapping两个抽象基类(Python2.6~3 ...
随机推荐
- 看完本文若不能让你学通“Python”,我将永远退出IT界
学Python,切忌今天这学一点,明天那里学一点,零零散散没有系统的学习.这样不仅耽搁大家时间,久而久之也会消磨大家学习的兴致!这里给大家总结了一张系统的Python学习路线图!希望大家共勉! Pyt ...
- day74:drf:drf其他功能:认证/权限/限流/过滤/排序/分页/异常处理&自动生成接口文档
目录 1.django-admin 2.认证:Authentication 3.权限:Permissions 4.限流:Throttling 5.过滤:Filtering 6.排序:OrderingF ...
- 蓝桥杯2020 E:七段码
题解 正规解法是 dfs + 并查集,首先用 dfs 将其所有的情况枚举出来,再用并查集来判断是否在一个连通块上. 许多小伙伴计算的答案为76,主要是判断连通块这方面有问题,倘若不用并查集,直接枚举一 ...
- Android测试工具 UIAutomator介绍
UI Automator 测试工具定义以及用途 UI Automator 测试框架提供了一组 API,用于构建在用户应用和系统应用上执行交互的界面测试.通过 UI Automator API,您可以执 ...
- 学会Git玩转GitHub(第三篇) 入门详解 - 精简归纳
学会Git玩转GitHub(第三篇) 入门详解 - 精简归纳 JERRY_Z. ~ 2020 / 10 / 25 转载请注明出处!️ 目录 学会Git玩转GitHub(第三篇) 入门详解 - 精简归纳 ...
- 通过Relect反射方法创建对象,获得对象的方法,输出对象信息
package reflects; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java. ...
- LoRaWAN和LoRa的区别在那里?
有很多人都分不清楚LoRaWAN和LoRa到底有什么区别,甚至有人认为它们是一样的,但其实这两个不一样的. LoRa是一个物理层的协议,而LoRaWAN则指的是MAC层的组网协议.虽然现有的LoRaW ...
- 云服务器部署scrapyd爬虫
Scrapyd部署爬虫项目 GitHub:https://github.com/scrapy/scrapyd API 文档:http://scrapyd.readthedocs.io/en/stabl ...
- 处理textarea里Enter(回车换行符)
Enter换行符 如果包含有回车换行符,在字符串中表现为"\n": 会返回一条字符串: 原文章:https://blog.csdn.net/shenlf_bk/article/de ...
- JVM学习(五) -执行子系统
虚拟机和物理机的区别.两种都有代码执行能力.物理机的执行引擎是建立在处理器.硬件.指令集和操作系统上.而虚拟机的执行引擎是有自己实现的.因此可以自行的制定指令集和执行引擎的结构关系. 个人理解:分为三 ...