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与js)两种实现
Feb 21 Python
Python实现LRU算法的2种方法
Jun 24 Python
Python中属性和描述符的正确使用
Aug 23 Python
requests和lxml实现爬虫的方法
Jun 11 Python
python负载均衡的简单实现方法
Feb 04 Python
使用 Django Highcharts 实现数据可视化过程解析
Jul 31 Python
运用PyTorch动手搭建一个共享单车预测器
Aug 06 Python
Python 列表的清空方式
Jan 13 Python
python针对Oracle常见查询操作实例分析
Apr 30 Python
Python猫眼电影最近上映的电影票房信息
Sep 18 Python
pycharm 如何查看某一函数源码的快捷键
May 12 Python
Python之matplotlib绘制饼图
Apr 13 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抓取远程图片(含不带后缀的)教程详解
2016/10/21 PHP
说说掌握JavaScript语言的思想前提想学习js的朋友可以看看
2009/04/01 Javascript
一段实现页面上的图片延时加载的js代码
2010/02/11 Javascript
简介AngularJS的HTML DOM支持情况
2015/06/17 Javascript
使用递归遍历对象获得value值的实现方法
2016/06/14 Javascript
jQuery解决input元素的blur事件和其他非表单元素的click事件冲突问题
2016/08/15 Javascript
简单实现vue中的依赖收集与响应的方法
2019/02/18 Javascript
微信小程序之侧边栏滑动实现过程解析(附完整源码)
2019/08/23 Javascript
刷新页面后让控制台的js代码继续执行
2019/09/20 Javascript
vue弹出框组件封装实例代码
2019/10/31 Javascript
微信sdk实现禁止微信分享(使用原生php实现)
2019/11/15 Javascript
基于Electron实现桌面应用开发代码实例
2020/07/07 Javascript
Vue+Element-U实现分页显示效果
2020/11/15 Javascript
[02:28]DOTA2 2015国际邀请赛中国区预选赛首日现场百态
2015/05/26 DOTA
python3中dict(字典)的使用方法示例
2017/03/22 Python
关于pip的安装,更新,卸载模块以及使用方法(详解)
2017/05/19 Python
Python删除Java源文件中全部注释的实现方法
2017/08/30 Python
基于并发服务器几种实现方法(总结)
2017/12/29 Python
一个Python最简单的接口自动化框架
2018/01/02 Python
使用实现pandas读取csv文件指定的前几行
2018/04/20 Python
Python可变参数*args和**kwargs用法实例小结
2018/04/27 Python
解决Python下imread,imwrite不支持中文的问题
2018/12/05 Python
Python3.6实现根据电影名称(支持电视剧名称),获取下载链接的方法
2019/08/26 Python
python如何提取英语pdf内容并翻译
2020/03/03 Python
Gap英国官网:Gap UK
2018/07/18 全球购物
美国折扣香水网站:The Perfume Spot
2020/12/12 全球购物
大四学生找工作的自荐信
2014/03/27 职场文书
班主任新年寄语
2014/04/04 职场文书
新教师岗前培训方案
2014/06/05 职场文书
医德考评自我评价
2014/09/14 职场文书
六五普法宣传标语
2014/10/06 职场文书
学生检讨书范文
2014/10/30 职场文书
2015年教师新年寄语
2014/12/08 职场文书
给老婆的检讨书1000字
2015/01/01 职场文书
2015少先队大队辅导员工作总结
2015/07/24 职场文书
Java并发编程之原子性-Atomic的使用
2022/03/16 Java/Android