容器类Collections

标签(空格分隔): Python进阶


  1. defaultdict
  2. counter
  3. deque
  4. namedtuple

defaultdict

defaultdict的作用是可以不用检查key是否存在,如果不存在可以直接创建。 而不像dict,会raise KeyError.

示例代码:

some_dict = {}
some_dict['colours'] = "yellow"
# Raises KeyError: 'colours'

示例代码2:

from collections import defaultdict
some_dict = defaultdict()
some_dict['colours'] = 'yellow'
# it works

defaultdict的经典用法

示例代码3:

from collections import defaultdict

colours = (
('Yasoob', 'Yellow'),
('Ali', 'Blue'),
('Arham', 'Green'),
('Ali', 'Black'),
('Yasoob', 'Red'),
('Ahmed', 'Silver'),
) favourite_colours = defaultdict(list) for name, colour in colours:
favourite_colours[name].append(colour)

Counter

Counter可以帮助计算一个iterable或者mapping中各个item的出现次数。

示例代码4:

from collections import Counter

colours = (
('Yasoob', 'Yellow'),
('Ali', 'Blue'),
('Arham', 'Green'),
('Ali', 'Black'),
('Yasoob', 'Red'),
('Ahmed', 'Silver'),
) favs = Counter(name for name, colour in colours)
print(favs)
# Output: Counter({
# 'Yasoob': 2,
# 'Ali': 2,
# 'Arham': 1,
# 'Ahmed': 1
# })

deque

deque == double ended queue 双头队列

deque 可以从左/右 进元素和出元素。

示例代码5:

from collections import deque
d = deque()
d.append('1')
d.append('2')
d.append('3')
d.appendleft('4')
d
#output: deque([4, 1, 2, 3])
d = deque(range(5))
print d
# output: deque([0, 1, 2, 3, 4])
d.pop()
#output: 4
d.popleft()
#output: 0
print d
#output: deque([1,2,3])
d.extendleft([0])
d.extend([6,7,8])
print d
#output: deque([0, 1, 2, 3, 6, 7, 8])

namedtuple

tuple和list的区别就是tuple是不可变的,tuple在初始化好了之后,元素不能插入也不能删除.

而namedtuple也继承了不可变的性质,但是它有点像dict,元素是key-value形式的,也就是named的由来,在初始化之后,可以通过name来访问元素。

示例代码6:

from collections import namedtuple
#tuple_name = namedtuple('tuple_name', 'item1_name, item2_name,...')
Animal = namedtuple('Animal', 'name age type') perry = Animal(name="perry", age=31, type="cat") print(perry)
# Output: Animal(name='perry', age=31, type='cat') print(perry.name)
# Output: 'perry' perry.age=40
# Output: Traceback (most recent call last):
# File "", line 1, in
# AttributeError: can't set attribute

Python之容器类Collections的更多相关文章

  1. python模块介绍- collections(5)-OrderedDict 有序字典

    1.3.5 OrderedDict 有序字典 OrderedDict是dict的子类,它记住了内容添加的顺序. import collections print 'Regular dictionary ...

  2. Python自建collections模块

    本篇将学习python的另一个内建模块collections,更多内容请参考:Python学习指南 collections是Python内建的一个集合模块,提供了许多有用的集合类. namedtupl ...

  3. Python标准库——collections模块的Counter类

    1.collections模块 collections模块自Python 2.4版本开始被引入,包含了dict.set.list.tuple以外的一些特殊的容器类型,分别是: OrderedDict类 ...

  4. python中的collections

    python中有大量的内置模块,很多是属于特定开发的功能性模块,但collections是属于对基础数据的类型的补充模块,因此,在日常代码中使用频率更高一些,值得做个笔记,本文只做主要关键字介绍,详细 ...

  5. Python标准模块--collections

    1.模块简介 collections包含了一些特殊的容器,针对Python内置的容器,例如list.dict.set和tuple,提供了另一种选择: namedtuple,可以创建包含名称的tuple ...

  6. Python基础、collections补充

    collections collections是Python数据类型的补充,可以实现Counter计数.可命名元组(namedtuple).默认字典.有序字典.双向队列等功能 参考:http://py ...

  7. python模块之collections

    我们都知道,Python拥有一些内置的数据类型,比如str, int, list, tuple, dict等, collections模块在这些内置数据类型的基础上,提供了几个额外的数据类型: (1) ...

  8. Python系列之Collections内置模块(1)

    collections 是 python 的内置模块,源码位于 Lib/collections/__init__.py ,该模块提供了通用的数据容器. deque 容器对象 通过 from colle ...

  9. Python常用模块--collections

    collections是Python中一个非常强大的容器数据模块. 1.创建升级版的元组--namedtupe Python的元组(1,2,3)具有不可变性,但是单独的元组在无法满足现有需求时,可以使 ...

随机推荐

  1. Nagios通过企业微信报警

    主要分两部分进行: 注册企业微信,自建应用,获取与发送消息相关的信息: 编写调用微信API脚本(bash),配置Nagios微信报警: 一.企业微信 1.注册企业微信:https://work.wei ...

  2. 第七周linux学习

    <Linux内核分析> 一.可执行程序是怎么得来的? 编译器预处理(负责把include的文件包含进来及宏替换等工作):编译成汇编代码:编译器编译成目标代码:再链接成可执行文件:操作系统加 ...

  3. CH暑假欢乐赛 SRM 07 天才麻将少女KPM(DP+treap)

    首先LIS有个$O(n^2)$的DP方法 $f(i,j)$表示前i个数,最后一个数<=j的LIS 如果$a_i!=0$则有 如果$a_i=0$则有 注意因为$f(i-1,j)\leq f(i-1 ...

  4. 一个最简单的使用Entity Framework 查询SQL 数据库的例子

    1.ADO.NET 3.5 Entity Framework是随着.net framework 3.5一起发布的,确认开发环境版本是大于等于3.5版本 2.确认已经安装了ADO.NET 3.5 Ent ...

  5. Docker入门与应用系列(一)介绍和部署

    Docker介绍 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制, ...

  6. linux命令总结之dig命令

    Dig简介: Dig是一个在类Unix命令行模式下查询DNS包括NS记录,A记录,MX记录等相关信息的工具.Dig的源码是ISC BIND大包的一部分,但是大多编译和安装Bind的文档都不把它包括在内 ...

  7. P1776 宝物筛选_NOI导刊2010提高(02)&& 多重背包二进制优化

    多重背包, 要求 \(N\log N\) 复杂度 Solution 众所周和, \(1-N\) 之内的任何数可以由 \(2^{0}, 2^{1}, 2^{2} ... 2^{\log N}, N - ...

  8. php 中 FastCGI与cgi的关系,何为fastcgi

    FastCGI是语言无关的.可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程保持 在内存中并因此获得较高的性能.众所周知,CGI解释器的反复加载是CGI性能低下的主要原因, 如果CGI解释器 ...

  9. centos7 install python3.7 with problem and how to fix it.

    问题如下: configure: error: no acceptable C compiler found in $PATH 缺少gcc zipimport.ZipImportError: can’ ...

  10. Spring boot 集成 mybaits plus(代码生成器)

    源码地址:https://github.com/YANGKANG01/Spring-Boot-Demo 代码生成操作 在pom.xml文件中引入以下包: <!-- mybatisplus与spr ...