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使用sftp实现上传和下载功能(实例代码)
Mar 14 Python
Django数据库操作的实例(增删改查)
Sep 04 Python
Python输出由1,2,3,4组成的互不相同且无重复的三位数
Feb 01 Python
Python八大常见排序算法定义、实现及时间消耗效率分析
Apr 27 Python
使用Python AIML搭建聊天机器人的方法示例
Jul 09 Python
Python import与from import使用及区别介绍
Sep 06 Python
解决Pandas的DataFrame输出截断和省略的问题
Feb 08 Python
python 基于TCP协议的套接字编程详解
Jun 29 Python
Django Channels 实现点对点实时聊天和消息推送功能
Jul 17 Python
Django 模型类(models.py)的定义详解
Jul 19 Python
python实现的多任务版udp聊天器功能案例
Nov 13 Python
Python+logging输出到屏幕将log日志写入文件
Nov 11 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中SESSION使用中的一点经验总结
2012/03/30 PHP
解析PHP缓存函数的使用说明
2013/05/10 PHP
利用php绘制饼状图的实现代码
2013/06/07 PHP
老生常谈PHP中的数据结构:DS扩展
2017/07/17 PHP
Extjs ajax同步请求时post方式参数发送方式
2009/08/05 Javascript
jQuery实现公告文字左右滚动的实例代码
2013/10/29 Javascript
js实现幻灯片播放图片示例代码
2013/11/07 Javascript
JavaScript中的Repaint和Reflow用法详解
2015/07/27 Javascript
javascript HTML+CSS实现经典橙色导航菜单
2016/02/16 Javascript
理解js回收机制通俗易懂版
2016/02/29 Javascript
JS实现购物车特效
2017/02/02 Javascript
微信小程序中post方法与get方法的封装
2017/09/26 Javascript
JS与CSS3实现图片响应鼠标移动放大效果示例
2018/05/04 Javascript
分享5个好用的javascript文件上传插件
2018/09/16 Javascript
在vue中使用v-bind:class的选项卡方法
2018/09/27 Javascript
小程序实现留言板
2018/11/02 Javascript
vue中根据时间戳判断对应的时间(今天 昨天 前天)
2019/12/20 Javascript
基于原生JS封装的Modal对话框插件的示例代码
2020/09/09 Javascript
[02:38]DOTA2英雄基础教程 噬魂鬼
2014/01/03 DOTA
wxPython中文教程入门实例
2014/06/09 Python
python实现自动登录人人网并访问最近来访者实例
2014/09/26 Python
python实现用于测试网站访问速率的方法
2015/05/26 Python
基于python中theano库的线性回归
2018/08/31 Python
python字符串下标与切片及使用方法
2020/02/13 Python
python 计算概率密度、累计分布、逆函数的例子
2020/02/25 Python
Python列表切片常用操作实例解析
2020/03/10 Python
Python虚拟环境virtualenv创建及使用过程图解
2020/12/08 Python
加拿大时尚床上用品零售商:QE Home | Quilts Etc
2018/01/22 全球购物
美国宠物美容和宠物用品购物网站:Cherrybrook
2018/12/07 全球购物
如何在发生故障的节点上重新安装 SQL Server
2013/03/14 面试题
武汉英思工程科技有限公司–ORACLE面试测试题目
2012/04/30 面试题
邀请函怎么写
2015/01/30 职场文书
2015法院个人工作总结范文
2015/05/25 职场文书
Python控制台输出俄罗斯方块的方法实例
2021/04/17 Python
Python中threading库实现线程锁与释放锁
2021/05/17 Python
Python必备技巧之函数的使用详解
2022/04/04 Python