【转】python模块分析之collections(六)
collections是Python内建的一个集合模块,提供了许多有用的集合类。
系列文章
OrderedDict
有序字典,相当于键值对列表;按照创建时的顺序保持不变。
方法:继承了dict结构,有其父类的所有的方法。
import collections
dt = {'a':1,'b':2,'c':3}
o_dict = collections.OrderedDict(dt)
# 通用方法
print(o_dict.keys()) # 返回字典所有的键顺序列表
print(o_dict.items()) # 返回字典键值对元组组成的列表
print(o_dict.values()) # 返回字典所有的值组成的列表
print(o_dict.get('a')) # 返回以键查找的值,没有返回None
print(o_dict.pop('a')) # 以键弹出一个键值对
print(o_dict.clear()) # 清空字典,返回None
print(o_dict.copy()) # 复制一个新的字典
print(o_dict.update({'a':2})) # 更新字典,没有添加新的,有就更新
print(o_dict.setdefault('h', 9)) # 获取一个键的值,如果没有用默认值替代同时加入到字典,有直接返回值
print(o_dict.fromkeys(['a', 'f', 'g'], value=10)) # 创建一个值相同的字典,和原来的字典无关,类方法
# 特殊方法
print(o_dict.popitem(last=True)) # 以元组的方式从右端弹出键值对,last=False从左边弹出
print(o_dict.move_to_end('a', last=True)) # 将一个键值对移到字典的末尾
defaultdict
import collections
dt = {'a':1,'b':2,'c':3}
# 可接受一个数据类型或无参数函数作为初始化
o_dict = collections.defaultdict(list)
o_dict1 = collections.defaultdict(lambda :10)
print(o_dict)
print(o_dict['a'].append(1)) # 默认所有的值都是列表
print(o_dict.get('a')) # 如果键存在,默认值为10
print(o_dict1)
namedtuple
namedtuple是一个函数,它用来创建一个自定义的tuple对象,并且规定了tuple元素的个数,并可以用属性而不是索引来引用tuple的某个元素。
import collections
# 返回一个tuple类型,可以通过自定义的属性访问而不是索引
User = collections.namedtuple('User', ['age','name'])
user = User(19,'xiaoming')
print(user.name)
print(user.age)
deque
- 双向列表,可以看做一个简单的队列,可以高效地插入和删除数据。支持列表形式的索引取值,不支持切片。
import collections
l = ['a', 'b', 'c']
dq = collections.deque(l)
print(dq.append('c')) # 从右边插入
print(dq.appendleft('c')) # 从左边插入
print(dq.pop()) # 从右边弹出
print(dq.popleft()) # 从左边弹出
print(dq.rotate(3)) # 当参数为正,从右边数n个移到左边;参数为负数时,从左边移动
Counter
- 一个简单的计数器,统计元素出现的次数,本质也是一个字典。该方法支持各种对字符串的统计;支持加减和交并运算.
import collections
l = 'ffdsgdfgasfsghdgdaf'
c = collections.Counter(l) # 直接生成以字符为键,个数为值的字典,值必须为int
print(c.most_common(3)) # 输出排名前3的元组列表
print(list(c.elements())) # 输出字符列表,从多到少
print(c.subtract('fsdfsfsf')) # 计算相减,得到相减后的字典
print(c)
ChainMap
- 增删改的操作都只会针对该对象的第一个字典,其余字典不会发生改变,但是如果是查找,则会在多个字典中查找,直到找到第一个出现的key为止。
import collections
dt1 = {'a':1, 'b':2}
dt2 = {'c':1, 'd':2}
c = collections.ChainMap([dt1, dt2]) # 创建一个映射视图将多个字典合在一起
# 特殊的方法
print(c.maps) # 返回所有的字典列表
# 在字典列表头部插入字典,如果其参数为空,则会默认插入一个空字典,并且返回一个改变后的ChainMap对象
print(c.new_child({'a':1}))
- 作者:天宇之游
- 出处:http://www.cnblogs.com/cwp-bg/
- 本文版权归作者和博客园共有,欢迎转载、交流,但未经作者同意必须保留此段声明,且在文章明显位置给出原文链接。
【转】python模块分析之collections(六)的更多相关文章
- 【转】python模块分析之unittest测试(五)
[转]python模块分析之unittest测试(五) 系列文章 python模块分析之random(一) python模块分析之hashlib加密(二) python模块分析之typing(三) p ...
- 【转】python模块分析之typing(三)
[转]python模块分析之typing(三) 前言:很多人在写完代码一段时间后回过头看代码,很可能忘记了自己写的函数需要传什么参数,返回什么类型的结果,就不得不去阅读代码的具体内容,降低了阅读的速度 ...
- 【转】python模块分析之logging日志(四)
[转]python模块分析之logging日志(四) python的logging模块是用来写日志的,是python的标准模块. 系列文章 python模块分析之random(一) python模块分 ...
- python模块分析之typing(三)
前言:很多人在写完代码一段时间后回过头看代码,很可能忘记了自己写的函数需要传什么参数,返回什么类型的结果,就不得不去阅读代码的具体内容,降低了阅读的速度,加上Python本身就是一门弱类型的语言,这种 ...
- python模块分析之logging日志(四)
前言 python的logging模块是用来设置日志的,是python的标准模块. 系列文章 python模块分析之random(一) python模块分析之hashlib加密(二) python模块 ...
- 【转】python模块分析之hashlib加密(二)
[转]python模块分析之hashlib加密(二) hashlib模块是用来对字符串进行hash加密的模块,明文与密文是一一对应不变的关系:用于注册.登录时用户名.密码等加密使用.一.函数分析:1. ...
- python模块分析之hashlib加密(二)
前言 hashlib模块是py3.+用来对字符串进行hash加密的模块,核心算法是md5,明文与密文是一一对应不变的关系:用于注册.登录时用户名.密码等加密使用. 模块分析 hashlib模块有多种加 ...
- python模块学习之collections
更多信息请前往官网网址: https://docs.python.org/3.6/library/collections.html 8.3.5. namedtuple() 命名字段的元组的工场函数 命 ...
- 潭州课堂25班:Ph201805201 python 模块json,os 第六课 (课堂笔记)
json 模块 import json data = { 'name':'aa', 'age':18, 'lis':[1,3,4], 'tupe':(4,5,6), 'None':None } j = ...
随机推荐
- python改文件名
import os file_names = os.listdir('D:\\mobilefile\\_hd') for file_name in file_names : print(file_na ...
- python 第一类对象 闭包 迭代器
########################总结########################### 1. 函数名 -> 第一类对象 函数名就是变量名. 函数可以赋值 函数可以作为集合类的 ...
- C#中 Reference Equals, == , Equals的区别
原文地址:http://blog.csdn.net/wuchen_net/archive/2010/03/23/5409327.aspx ReferenceEquals, == , Equals Eq ...
- 不存数据库的token验证
不需要数据库存,纯粹通过计算来判断是否相等 {name:chuck,id:1}|自己加密方式加密后的内容 截取加密内容,反解,判断反解内容与{name:chuck,id:1}是否相同,只会耗费计算资源 ...
- HanLP二元核心词典解析
HanLP二元核心词典解析 本文分析:HanLP版本1.5.3中二元核心词典的存储与查找.当词典文件没有被缓存时,会从文本文件CoreNatureDictionary.ngram.txt中解析出来存储 ...
- WEUI Picker不切换数据
/*js部分,myPicker是设备号input的ID*/ $('#myPicker').change(function () { /*选择设备号后,根据当前设备号设置不同的摄像头选项,具体判断逻辑根 ...
- ****** 四十九 ******、软设笔记【UML分析和意义】-建模的意义,UML的特点、结构,用例图
UML UML又称同一建模语言或标准建模语言,是一个支持模型化和软件系统开发的图形化语言,它的作用域不仅支持面向对象的分析与设计,还支持从需求分析开始的软件开发的全过程. 建模的意义: 模型是对现实的 ...
- idea中配置Springboot热部署
1 pom.xml文件 注:热部署功能spring-boot-1.3开始有的 <!--添加依赖--> <dependency> <groupId>org.sprin ...
- axis2客户端
package com.yq.test; /** * Created by yangqing on 2016/12/6. */ import java.util.Date; import java.u ...
- 【LeetCode】134.Gas Station
Problem: There are N gas stations along a circular route, where the amount of gas at station i is ga ...