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 相关文章推荐
浅谈DataFrame和SparkSql取值误区
Jun 09 Python
Python实现点阵字体读取与转换的方法
Jan 29 Python
如何在Django中添加没有微秒的 DateTimeField 属性详解
Jan 30 Python
Python利用神经网络解决非线性回归问题实例详解
Jul 19 Python
django用户登录验证的完整示例代码
Jul 21 Python
python 实现多线程下载视频的代码
Nov 15 Python
python3.8下载及安装步骤详解
Jan 15 Python
python等待10秒执行下一命令的方法
Jul 19 Python
Python学习笔记之装饰器
Aug 06 Python
如何用Python绘制3D柱形图
Sep 16 Python
Python将list元素转存为CSV文件的实现
Nov 16 Python
python+appium+yaml移动端自动化测试框架实现详解
Nov 24 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
为查询结果建立向后/向前按钮
2006/10/09 PHP
PHP得到mssql的存储过程的输出参数功能实现
2012/11/23 PHP
php中有关字符串的4个函数substr、strrchr、strstr、ereg介绍和使用例子
2014/04/24 PHP
PHP实现的英文名字全拼随机排号脚本
2014/07/04 PHP
详解PHP的Yii框架中日志的相关配置及使用
2015/12/08 PHP
Ajax实现对静态页面的文章访问统计功能示例
2016/10/10 PHP
Laravel使用PHPQRCODE实现生成带有LOGO的二维码图片功能示例
2017/07/07 PHP
js 对象是否存在判断
2009/07/15 Javascript
Jquery css函数用法(判断标签是否拥有某属性)
2011/05/28 Javascript
js setTimeout()函数介绍及应用以倒计时为例
2013/12/12 Javascript
jquery淡化版banner异步图片文字效果切换图片特效
2014/04/08 Javascript
node.js中的http.response.writeHead方法使用说明
2014/12/14 Javascript
学习Javascript闭包(Closure)知识
2016/08/07 Javascript
深入理解vue路由的使用
2017/03/24 Javascript
基于LayUI分页和LayUI laypage分页的使用示例
2017/08/02 Javascript
JS+canvas绘制的动态机械表动画效果
2017/09/12 Javascript
详解利用 Vue.js 实现前后端分离的RBAC角色权限管理
2017/09/15 Javascript
React Native验证码倒计时工具类分享
2017/10/24 Javascript
jQuery实现获取多选框的值示例
2020/02/07 jQuery
javascrpt密码强度校验函数详解
2020/03/18 Javascript
Node.js API详解之 repl模块用法实例分析
2020/05/25 Javascript
vue+echarts+datav大屏数据展示及实现中国地图省市县下钻功能
2020/11/16 Javascript
[01:01:31]2018DOTA2亚洲邀请赛3月29日小组赛B组 Mineski VS paiN
2018/03/30 DOTA
[02:16]2018年度CS GO最具人气选手-完美盛典
2018/12/16 DOTA
[49:17]DOTA2-DPC中国联赛 正赛 Phoenix vs Dynasty BO3 第三场 1月26日
2021/03/11 DOTA
python基础教程之获取本机ip数据包示例
2014/02/10 Python
python两种遍历字典(dict)的方法比较
2014/05/29 Python
Python实现快速排序和插入排序算法及自定义排序的示例
2016/02/16 Python
Python 批量读取文件中指定字符的实现
2020/03/06 Python
英国在线发型和美容产品商店:Beauty Cutie
2019/04/27 全球购物
三陽商会官方网站:Sanyo iStore
2019/05/15 全球购物
面向中国市场的在线海淘美妆零售网站:Beauty House美丽屋
2021/03/02 全球购物
介绍一下linux的文件权限
2012/02/15 面试题
物流专业大学应届生求职信
2013/11/03 职场文书
党员学习群众路线心得体会
2014/11/04 职场文书
2015年部门工作总结范文
2015/03/31 职场文书