标准库之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 ...
随机推荐
- Cypress系列(69)- route() 命令详解
如果想从头学起Cypress,可以看下面的系列文章哦 https://www.cnblogs.com/poloyy/category/1768839.html 作用 管理控制整个网络请求 重要注意事项 ...
- 非常全面的讲解SpringCloud中Zuul网关原理及其配置,看它就够了!
Zuul是spring cloud中的微服务网关.网关:是一个网络整体系统中的前置门户入口.请求首先通过网关,进行路径的路由,定位到具体的服务节点上. Zuul是一个微服务网关,首先是一个微服务.也是 ...
- 一篇文章搞定Git——Git代码管理及使用规范
一篇文章搞定Git--Git代码管理及使用规范 https://blog.csdn.net/weixin_42092278/article/details/90448721
- Spring Boot学习笔记(一)——Eclipse安装STS插件
一.简介 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式进行配置,从而使开发人员不再需要定义样板化的配 ...
- 关于transition中嵌套keep-alive的问题解决
需求:在使用keep-alive的同时使用transition动画效果 最开始是这样写的,但是发现报错,而且动画效果失效 <transition name="container-rig ...
- 《Clojure编程》笔记 第13章 测试
目录 背景简述 第13章 测试 13.1 术语 13.2 clojure.test 13.2.1 定义测试的两种方式 13.2.1.1 用deftest宏把测试定义成单独的函数 13.2.1.2 用w ...
- 理解Task和和async await
本文将详解C#类当中的Task,以及异步函数async await和Task的关系 一.Task的前世今生 1.Thread 一开始我们需要创建线程的时候一般是通过Thread创建线程,一般常用创建线 ...
- vscode 插件配置指北
Extension Manifest 就像 chrome 插件使用 manifest.json 来管理插件的配置一样,vscode 的插件也有一个 manifest,而且就叫 package.json ...
- python数据分析 Numpy基础 数组和矢量计算
NumPy(Numerical Python的简称)是Python数值计算最重要的基础包.大多数提供科学计算的包都是用NumPy的数组作为构建基础. NumPy的部分功能如下: ndarray,一个具 ...
- 监控-Cat项目部署
一.Cat的项目背景 CAT(Central Application Tracking),是美团点评基于 Java 开发的一套开源的分布式实时监控系统.美团点评基础架构部希望在基础存储.高性能通信.大 ...