标准库之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中的__new__()方法
2020-3-17更新本文,对本文中存争议的例子进行了更新! 曾经我幼稚的以为认识了python的__init__()方法就相当于认识了类构造器,结果,__new__()方法突然出现在我眼前,让我突然 ...
- VMware Workstatition启动虚拟机电脑蓝屏
电脑出了点问题,重装了系统,结果安装VMware之后,一启动虚拟机电脑就蓝屏重启. 系统是win10 19041 开始用的原来下载的vmware15.0,创建虚拟机蓝屏,重启之后可以创建.创建完以后启 ...
- mysql 架构简介
mysql的逻辑架构 第一层:进行连接处理.权限认证.安全校验等. 当客户端(应用)连接到mysql服务器时,服务器会创建使用一个线程进行处理连接(少量的线程服务大量的连接),随后服务器需要对该连接进 ...
- GridView使用SimpleAdapter
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app=&q ...
- LoadRunner接口脚本编写过程中遇到的问题及分享
工作中需要接口测试,报文编辑器一条条手工发费时费力,因此考虑利用web_submit_data函数POST方法进行报文编辑.在报文编辑中主要遇到了三个问题,其中一个问题耗时两天查到问题所在,在这里与大 ...
- Java8新特性探索之函数式接口
一.为什么引入函数式接口 作为Java函数式编程爱好者,我们都知道方法引用和 Lambda 表达式都必须被赋值,同时赋值需要类型信息才能使编译器保证类型的正确性. 我们先看一个Lambda代码示例: ...
- POJ2432 Around the world
题意描述 Around the world 在一个圆上有 \(n\) 点,其中有 \(m\) 条双向边连接它们,每条双向边连接两点总是沿着圆的最小弧连接. 求从 \(1\) 号点出发并回到 \(1\) ...
- 令人惊叹的百度Echarts,大数据分析的必备工具
学习目录 1.可视化面板介绍 1.1技术要点 1.2案例适配方案 1.3页面主体布局2.Echarts(重点) 2.1echarts介绍 2.2echarts体 ...
- Android操作系统及APP
1. Android操作系统 1.1. 介绍 Android操作系统最初由Andy Rubin开发,主要支持手机.2005年8月由Google收购注资.第一部Android智能手机发布于2008 ...
- .net 之json 一般处理程序
<%@ WebHandler Language="C#" Class="read" %> using System; using System.We ...