python ChainMap 合并字典的实现步骤
作者:呢喃 发布时间:2021-06-19 01:24:52
字典是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'])
来源:https://liuhonghe.me/python-chainmap-update-dict.html


猜你喜欢
- 写过PHP+MySQL的程序员都知道有时间差,UNIX时间戳和格式化日期是我们常打交道的两个时间表示形式,Unix时间戳存储、处理方便,但是
- dispy,是用asyncoro实现的分布式并行计算框架。框架也是非常精简,只有4个组件,在其源码文件夹下可以找到:dispy.py (cl
- 一、卷积神经网络Yann LeCun 和Yoshua Bengio在1995年引入了卷积神经网络,也称为卷积网络或CNN。CNN是一种特殊的
- 三重相等运算符 === 严格检查2个值是否相同:1 === 1; // => true1 === '1';
- 总所周知bilibili是没有办法直接查看弹幕的发送者的
- 1. 配置并更新树莓派系统sudo raspi-config // 进入后打开摄像头、SSHsudo apt-get updatesudo
- 表单递交合法性检测-只接受数字。如下代码加入HTML的<head>区:<SCRIPT LANGUAGE=&quo
- 首先,我们要先看看微信远程控制电脑的原理是什么呢? 我们可以利用Python的标准库控制本机电脑,然后要实现远程的话,我们可以把电子邮件作为
- 在SQL Server中,如果我想授予一个用户klb拥有创建表的权限,但是我又不想授予其数据库角色db_ddladmin,因为这样会扩大其权
- 目录1.Python语法错误2.Python运行时错误前言:开发人员在编写程序时,难免会遇到错误,有的是编写人员疏忽造成的语法错误,有的是程
- 重要提示:本文并非一篇简单地介绍内联格式模型(inline formatting model)的文章。相反,它是对内联格式(inline f
- Oracle关系型数据库管理系统是世界上流行的关系数据库,它是一个极其强大、灵活和复杂的系统,据说,在使用oracle时应有这样的思想,那就
- 1、查看数据库的字符集数据库的字符集必须和Linux下设置的环境变量一致,不然会有乱码。以下两个sql语句都可以查到:select * fr
- 最简单的模式,C/S模式实现聊天室从半双工开始,何谓半双工?半双工即是说双方可以互发消息,但一次只能一个用户发送。 只要稍微会点s
- 一、 封装的JS文件 //********************************************************
- 原文:10 Principles Of Effective Web Design翻译:熊猫2008-02-03本文由熊猫同学授权翻译首发。并
- 本文实例为大家分享了Python3实现飞机大战游戏的具体代码,供大家参考,具体内容如下1、主程序:plane_main.pyimport p
- Fib实例虽然能作用于for循环,看起来和list有点像,但是,把它当成list来使用还是不行,比如,取第5个元素:>>>
- 先介绍一下redis的pub/sub功能:Pub/Sub功能(means Publish, Subscribe)即发布及订阅功能。基于事件的
- 1.筛选出目标值所在行 单列筛选# df[列名].isin([目标值])对当前列中存在目标值的行会返回True,不存在的返回Fal