python ChainMap 合并字典的实现步骤


Posted in Python onJune 11, 2019

字典是Python语言中唯一的映射类型。

映射类型对象里哈希值(键,key)和指向的对象(值,value)是一对多的的关系,通常被认为是可变的哈希表。
字典对象是可变的,它是一个容器类型,能存储任意个数的Python对象,其中也可包括其他容器类型。

字典类型与序列类型的区别:

1. 存取和访问数据的方式不同。
2. 序列类型只用数字类型的键(从序列的开始按数值顺序索引);
3. 映射类型可以用其他对象类型作键(如:数字、字符串、元祖,一般用字符串作键),和序列类型的键不同,映射类型的键直4.接或间接地和存储数据值相关联。
5. 映射类型中的数据是无序排列的。这和序列类型是不一样的,序列类型是以数值序排列的。
6. 映射类型用键直接“映射”到值。

字典是Python中最强大的数据类型之一。 

ChainMap对象支持字典对象的所有方法,你可以完全像操作字典一样操作它。但是它不会真的把字典合并在一起,而是在内部储存一个Key到每个字典的映射,当你读取 e[key]的时候,它先去查询这个key在哪个字典里面,然后再去对应的字典里面查询对应的值。所以使用ChainMap几乎不需要额外的内存空间(当然这个对象自己会占用一些空间,但是如果要合并大字典,那么它自己占用的空间几乎可以忽略)。

from collections import ChainMap

a = {'a': 1, 'b': 2}
b = {'x': 3, 'y': 4}
a.update(b)
print(a)

c = ChainMap(a, b)
print(c['a'])

如果两个字典里面有一个Key的名字相同, ChainMap对象会使用第一个拥有这个Key的字典里面的值

a = {'a': 1, 'b': 2}
b = {'a': 3, 'y': 4}

c = ChainMap(a, b)
print(c['a'])

如果为ChainMap对象添加一个Key-Value对, 新的Key-Value会被添加进第一个字典里面

a = {'a': 1, 'b': 2}
b = {'a': 3, 'y': 4}

c = ChainMap(a, b)
c['new'] = "新值"
print(a)

如果从原字典里面删除一个Key, ChainMap对象也会相应更新

a = {'a': 1, 'b': 2}
b = {'a': 3, 'y': 4}

c = ChainMap(a, b)
print('w' in c)
a['w'] = '新值'
print('w' in c)

如果从ChainMap对象里面删除一个Key,如果这个Key只在一个源字典中存在,那么这个Key会被从源字典中删除。如果这个Key在多个字典中都存在,那么Key会被从第一个字典中删除。当被从第一个字典中删除以后,第二个源

字典的Key可以ç»§续被ChainMap读取

不能删除第一个字典 a 里不存在的key

a = {'a': 1, 'b': 2}
b = {'aa': 3, 'a': 4}

c = ChainMap(a, b)
c.pop('a') # 只能删除 a 里的 k,删 b 会报错
print(a, b)
print(c['a'])

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python和bash统计CPU利用率的方法
Jul 10 Python
Python时间戳使用和相互转换详解
Dec 11 Python
浅谈使用Python内置函数getattr实现分发模式
Jan 22 Python
Django 浅谈根据配置生成SQL语句的问题
May 29 Python
解决Python获取字典dict中不存在的值时出错问题
Oct 17 Python
实例讲解Python中浮点型的基本内容
Feb 11 Python
python使用Plotly绘图工具绘制水平条形图
Mar 25 Python
python 实现查找文件并输出满足某一条件的数据项方法
Jun 12 Python
Django实现web端tailf日志文件功能及实例详解
Jul 28 Python
python区分不同数据类型的方法
Oct 14 Python
解决pytorch-yolov3 train 报错的问题
Feb 18 Python
python类共享变量操作
Sep 03 Python
itchat-python搭建微信机器人(附示例)
Jun 11 #Python
python itchat实现调用微信接口的第三方模块方法
Jun 11 #Python
python 将字符串完成特定的向右移动方法
Jun 11 #Python
python itchat给指定联系人发消息的方法
Jun 11 #Python
使用Flask-Cache缓存实现给Flask提速的方法详解
Jun 11 #Python
使用Python实现将list中的每一项的首字母大写
Jun 11 #Python
Python中@property的理解和使用示例
Jun 11 #Python
You might like
献给php初学者(入门学习经验谈)
2010/10/12 PHP
php 学习资料零碎东西
2010/12/04 PHP
php中mysql连接和基本操作代码(快速测试使用,简单方便)
2014/04/25 PHP
ThinkPHP+EasyUI之ComboTree中的会计科目树形菜单实现方法
2017/06/09 PHP
php简单读取.vcf格式文件的方法示例
2017/09/02 PHP
PHP Ajax跨域问题解决方案代码实例
2020/08/01 PHP
javascript之函数直接量(function(){})()
2007/06/29 Javascript
用js实现计算加载页面所用的时间
2010/04/02 Javascript
JavaScript 基础篇(一)
2012/03/30 Javascript
解析Javascript小括号“()”的多义性
2013/12/03 Javascript
Extjs表单常见验证小结
2014/03/07 Javascript
JavaScript学习笔记之Cookie对象
2015/01/22 Javascript
layer弹出层框架alert与msg详解
2017/03/14 Javascript
bootstrap是什么_动力节点Java学院整理
2017/07/14 Javascript
vue2 router 动态传参,多个参数的实例
2017/11/10 Javascript
vue组件传值的实现方式小结【三种方式】
2020/02/05 Javascript
如何在JavaScript中使用localStorage详情
2021/02/04 Javascript
Python中实现对Timestamp和Datetime及UTC时间之间的转换
2015/04/08 Python
Python中time模块与datetime模块在使用中的不同之处
2015/11/24 Python
详解Python多线程
2016/11/14 Python
Python实现重建二叉树的三种方法详解
2018/06/23 Python
Python selenium自动化测试模型图解
2020/04/15 Python
浅谈python量化 双均线策略(金叉死叉)
2020/06/03 Python
有关HTML5页面在iPhoneX适配问题
2017/11/13 HTML / CSS
伦敦新晋轻奢耳饰潮牌:Tada & Toy
2020/05/25 全球购物
俄罗斯在线服装店:STOLNIK
2021/03/07 全球购物
高中自我鉴定
2013/12/20 职场文书
酒店前厅员工辞职信
2014/01/08 职场文书
中学生期末评语
2014/02/03 职场文书
年终总结会主持词
2014/03/25 职场文书
爱岗敬业演讲稿
2014/05/05 职场文书
12岁生日演讲稿
2014/05/14 职场文书
一份关于丢失公司财物的检讨书
2014/09/19 职场文书
四年级数学上册教学计划
2015/01/20 职场文书
酒店工程部经理岗位职责
2015/04/09 职场文书
ObjectMapper 如何忽略字段大小写
2021/06/29 Java/Android