collections是Python中一个非常强大的容器数据模块。

1.创建升级版的元组--namedtupe

Python的元组(1,2,3)具有不可变性,但是单独的元组在无法满足现有需求时,可以使用升级版的元组,使用namedtupe可以很方便地定义一种数据类型,它具备tuple的不变性,又可以根据属性来引用,使用十分方便。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = "问道编程"
__date__ = "2019/03/18 12:37" from collections import namedtuple Point = namedtuple('Ponit', ['x', 'y']) # 实例化一个tupe对象,并规定了对象数量以及属性:x、y
p = Point(1,3) # 赋值
print(p.x) # 通过属性访问数据
print(p.y)

2.创建升级版的列表--deque

使用list存储数据时,可以非常方便的进行查询和尾部操作(append、pop),但是在头部添加、删除时效率很低(最大时间复杂度为n),所以有了deque,可以实现高效的头、尾的操作,适合用于队列和栈:

from collections import deque

q = deque([1,2,3])
q.append(6) # [1,2,3,6] 同list一样进行尾部添加、删除操作
q.pop() # [1,2,3]
q.appendleft('x') # ['x',1,2,3] 头部添加
q.popleft() # [1,2,3] 头部删除

3.创建升级版字典--defaultdict

常用的dict使用键值对存储数据,但当使用key访问匹配的值,而key不存在时会报错,而使用defaultdict可以规定一个默认值,当使用不存在的key查询字典的值时,会返回一个指定的默认值:

from collections import defaultdict

d = defaultdict(lambda: 'N/A')   # 创建defaultdict对象,是字典类型的子集,并规矩默认值是   N/A
d['a'] = 1
print(d['a']) # 1 正常输出
print(d['b']) # N/A key不存在时,输出默认值

4.创建有顺序的字典--OrderedDict

常用的dict是不记录键值对顺序的,使用OrderedDict可以创建相对有序的字典,该类型可记录字典的输入顺序,但不能自动进行排序:

from collections import OrderedDict

d = OrderedDict()
d['a'] = 1
d['b'] = 2 print(d.keys()) # ['a','b'] 会按照key值的录入顺序进行打印

5.创建多个字典的映射--ChainMap

官方解释:一个 ChainMap 类是为了将多个映射快速的链接到一起,这样它们就可以作为一个单元处理。它通常比创建一个新字典和多次调用 update() 要快很多。

通俗的说,是创建一将多个字典链接到一起的映射,底层通过list实现,查询时,从第一个字典映射开始查,如果第一个字典没有,查询第二个,依次类推,但是更新、删除数据时仅对于第一个字典映射操作。

通常在进行拼接命令行时,可以对参数进行优先选择,比如用户输入数据、环境传入、默认值。

参考:https://docs.python.org/zh-cn/3/library/collections.html

6.功能强大的列表计数功能--Counter

from collections import Counter

arr = [1,2,3,3,3,6,2,2,2]  # 1出现1次,2出现4次,3出现3次,6出现1次
print(arr.count(3)) # 3 可以使用list的count方法获取指定值的出现次数
cou = Counter(arr)
pirnt(cou) # Counter({3: 3, 2: 2, 1: 1, 5: 1, 6: 1}) 属于字典的子集 for k,v in cou.items():
print(k,v) # 对Counter进行遍历,打印结果
print(cou.most_common(2)) # [(3,3),(2,2)]  返回出现次数最高的前两个数字及次数


Python常用模块--collections的更多相关文章

  1. python常用模块collections os random sys

    Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句. 模块让你能够有逻辑地组织你的 Python 代码段. 把相关的代码 ...

  2. python常用模块---collections、time、random、os、sys、序列号模块

    collections模块 在内置数据类型(dict.list.set.tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter.deque.defaultdict. ...

  3. python常用模块——collections

    好久没学习了,简单了解下 Ⅰ.namedtuple 1.1 简单回顾一下tuple tuple是一个不可变的可迭代对象 ①可迭代 In [1]: test_tuple = (1,2,3,4,5) In ...

  4. python常用模块(1):collections模块和re模块(正则表达式详解)

    从今天开始我们就要开始学习python的模块,今天先介绍两个常用模块collections和re模块.还有非常重要的正则表达式,今天学习的正则表达式需要记忆的东西非常多,希望大家可以认真记忆.按常理来 ...

  5. Python之常用模块--collections模块

    认识模块 什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1 使用python编写的 ...

  6. python常用模块详解

    python常用模块详解 什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1 使用p ...

  7. Python常用模块——目录

    Python常用模块学习 Python模块和包 Python常用模块time & datetime &random 模块 Python常用模块os & sys & sh ...

  8. python常用模块集合

    python常用模块集合 Python自定义模块 python collections模块/系列 Python 常用模块-json/pickle序列化/反序列化 python 常用模块os系统接口 p ...

  9. Python常用模块之sys

    Python常用模块之sys sys模块提供了一系列有关Python运行环境的变量和函数. 常见用法 sys.argv 可以用sys.argv获取当前正在执行的命令行参数的参数列表(list). 变量 ...

随机推荐

  1. 字符串为空的比较 ==与equals() 区别(キ`゚Д゚´)!!基础很重要 !!!

    情况描述:我提交的代码,让老大审批了一次,讲真的,对于我来说受益匪浅,其中有一个印象很深的内容:一个字符串是否为空的判断,我以前敲代码一直都是这样写的,可是从来都没有意识到这个东西. 代码: if(s ...

  2. cf441 f组合数。。单调指针

    e没学过做不出来.. 处理合法的区间很麻烦,但是处理非合法的区间很容易 答案就是所有的取法-不合法的区间 这题一定要双边界推进处理!!!! 一开始用单边界向右推进,结果后来发现错了,拿样例1就可以证明 ...

  3. 论文阅读笔记三十五:R-FCN:Object Detection via Region-based Fully Convolutional Networks(CVPR2016)

    论文源址:https://arxiv.org/abs/1605.06409 开源代码:https://github.com/PureDiors/pytorch_RFCN 摘要 提出了基于区域的全卷积网 ...

  4. 常见的HTTP响应状态码解析

    概要 状态码的职责是当客户端向服务器端发送请求时,描述返回的请求结果.借助于状态码,浏览器(或者说用户)可以知道服务器是正常的处理了请求,还是出现了错误. 状态码以3位数字和原因短语组成,例如 200 ...

  5. 利用sqoop对mysql执行DML操作

    业务背景 利用Sqoop对MySQL进行查询.添加.删除等操作. 业务实现 select操作: sqoop eval \ --connect jdbc:mysql://127.0.0.1:3306/m ...

  6. hive和hbase比较(整理)

    hive1.可以理解为一种SQL执行引擎,对SQL的支持最终转换为map/reduce任务2.不支持更新.删除操作,但可以插入3.任务不是实时执行,用时一般为数分钟到数小时4.本身可以不存储数据,只存 ...

  7. epoll函数

    函数epoll 1. 函数epoll_creat: 该函数生成一个epoll专用的文件描述符 int epoll_creae(int size); 分析: size:epoll上能关注的最大描述符数 ...

  8. GreenDao3.2的简单使用

    Android -- GreenDao3.2的简单使用http://www.cnblogs.com/wjtaigwh/p/6394288.html https://github.com/greenro ...

  9. jxoi2017

    题解: 并不知道题目顺序就按照难度排序了 [JXOI2017]加法 这是一道很简单的贪心 最小值最大二分答案 然后我们可以从左向右考虑每一个位置 如果他还需要+A 我们就从能覆盖它的区间中挑一个最右的 ...

  10. BZOJ 3745

    题解: 分治好题 首先暴力显然rmq可以做到n^2 比较容易想到是以最值分治,这样在数据随机复杂度是nlogn,不随机还是n^2的 以最值分治只有做多与较小区间复杂度相同才是nlogn的 而这题里我们 ...