Python Chainmap函数 - Python零基础入门教程

目录

  • 一.前言
  • 二.Python ChainMap 合并多个字典
  • 三.Python ChainMap 查询和遍历
  • 四.Python ChainMap 修改
  • 五.Python ChainMap 增加
  • 六.Python ChainMap 重点总结
  • 七.猜你喜欢

零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门

一.前言

假如我们有多个字典,想把它们合并成为一个单独的字典 dict ,有人说可以用 update 函数进行合并,这样做的问题就是新建了一个数据结构以至于当我们对原来的字典进行更改的时候不会同步。如果想建立一个同步的查询方法,可以使用 ChainMap 函数。

Python 内置函数 ChainMap 可以将多个字典合并为一个独有的字典,这样的操作 并不是对源数据的拷贝,而是指向源数据,假如原字典数据修改,ChainMap 映射也会改变;如果对 ChainMap 的结果修改,那么原数据一样也会被修改,这样就不会造成数据不同步的问题,当然需要因使用场景而定。

二.Python ChainMap 合并多个字典

使用 ChainMap 可以将多个字典 dict 串联起来,当做一个字典 dict 来处理,示例代码如下:

# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:猿说编程
@Blog(个人博客地址): www.codersrc.com
@File:Python Chainmap函数.py
@Time:2021/3/21 23:00
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!"""from collections import ChainMapdict1= {"a":"zhangsan","b":"lisi"}
dict2= {"c":"wangwu"}
dict3= {"d":"liqui","e":"laowang"}new_dict = ChainMap(dict1,dict2,dict3)
print(new_dict)
print(type(new_dict))'''
输出结果:
ChainMap({'a': 'zhangsan', 'b': 'lisi'}, {'c': 'wangwu'}, {'d': 'liqui', 'e': 'laowang'})
<class 'collections.ChainMap'>
'''

三.Python ChainMap 查询和遍历

ChainMap 函数将多个字典 dict 合并为一个字典 dict ,查询和遍历的方式和对普通字典 dict 的操作方式一样,示例代码如下:

# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:猿说编程
@Blog(个人博客地址): www.codersrc.com
@File:Python Chainmap函数.py
@Time:2021/3/21 23:00
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!"""from collections import ChainMapdict1= {"a":"zhangsan","b":"lisi"}
dict2= {"c":"wangwu"}
dict3= {"d":"liqui","b":"laowang"}new_dict = ChainMap(dict1,dict2,dict3)# 查询,可以直接根据key值查新,和字典操作方式一样
print(new_dict["a"])
print(new_dict["b"]) #当多个字典中有相同的key值是,默认取第一个key对应的value
print(new_dict["c"])print("***"*20)
# 遍历,可以直接根据key或者value遍历,和普通字典一样操作
for key,value in new_dict.items():print(key,":",value)'''
输出结果:
zhangsan 
lisi 
wangwu 
************************************************************ 
e : laowang 
c : wangwu 
d : liqui 
a : zhangsan 
b : lisi'''

注意:如果在使用 ChainMap 合并多个字典时,字典中有重复的 key 值,默认取第一个字典中 key 对应的 value ,从原理上面讲,ChainMap 实际上是把放入的字典存储在一个队列中,当进行字典的增加删除等操作只会在第一个字典上进行,当进行查找的时候会依次查找!

四.Python ChainMap 修改

maps 方法会将串联起来的字典以列表的形式展示,示例代码如下:

# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:猿说编程
@Blog(个人博客地址): www.codersrc.com
@File:Python Chainmap函数.py
@Time:2021/3/21 23:00
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!"""from collections import ChainMapdict1= {"a":"zhangsan","b":"lisi"}
dict2= {"c":"wangwu"}
dict3= {"d":"liqui","b":"laowang"}new_dict = ChainMap(dict1,dict2,dict3)
print("new_dict修改数据之后:",new_dict)
print("dict1修改数据之前:",dict1)# 操作列表中索引值为0的字典,修改key="a"对应的value
new_dict.maps[0]["a"]=18print("new_dict修改数据之后:",new_dict)
print("dict1修改数据之后:",dict1)'''
输出结果:
new_dict修改数据之后: ChainMap({'a': 'zhangsan', 'b': 'lisi'}, {'c': 'wangwu'}, {'d': 'liqui', 'b': 'laowang'})
dict1修改数据之前: {'a': 'zhangsan', 'b': 'lisi'}
new_dict修改数据之后: ChainMap({'a': 18, 'b': 'lisi'}, {'c': 'wangwu'}, {'d': 'liqui', 'b': 'laowang'})
dict1修改数据之后: {'a': 18, 'b': 'lisi'}'''

注意:ChainMap 使用就是原始字典,共用同一内存地址,因此原始数据修改,ChainMap 映射也会改变;如果对 ChainMap 的结果修改,那么原数据一样也会被修改

五.Python ChainMap 增加

可以通过 new_child() 函数添加一个新的空白字典,然后像普通字典一样操作添加数据,示例代码如下:

# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:猿说编程
@Blog(个人博客地址): www.codersrc.com
@File:Python Chainmap函数.py
@Time:2021/3/21 23:00
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!"""from collections import ChainMapdict1= {"a":"zhangsan","b":"lisi"}
dict2= {"c":"wangwu"}# 合并字典
new_dict = ChainMap(dict1,dict2)
print(new_dict)# 添加数据
new_dict1 = new_dict.new_child()
print(new_dict1)
new_dict1["x"]=0
new_dict1["y"] = 100.0
print(new_dict1)'''
输出结果:
ChainMap({'a': 'zhangsan', 'b': 'lisi'}, {'c': 'wangwu'})
ChainMap({}, {'a': 'zhangsan', 'b': 'lisi'}, {'c': 'wangwu'})
ChainMap({'x': 0, 'y': 100.0}, {'a': 'zhangsan', 'b': 'lisi'}, {'c': 'wangwu'})'''

六.Python ChainMap 重点总结

  • 1、ChainMap 可接受多个映射然后在逻辑上使它们表现为一个单独的映射结构;它只是维护了一个记录底层映射关系的列表,然后去重定义常用的字典操作;
  • 2、如果有重复的键,会采用第一个映射中多对应的值;
  • 3、修改 ChainMap 映射结构,会同时作用在自己和原始字典结构上;
  • 4、可以使用字典的 update() 方法,来替代上面的合并方案;但是这就需要创建一个新的字典对象(或者修改原字典,破坏了原始数据),并且原始字典做了修改,并不会反映到新建的字典上;
  • 5、ChainMap 使用的就是原始字典,因此原字典变,它也会改变。

七.猜你喜欢

  1. Python 简介
  2. Python Pycharm Anacanda 区别
  3. Python2.x 和 Python3.x,如何选择?
  4. Python 配置环境
  5. Python Hello World 入门
  6. Python 代码注释
  7. Python 中文编码
  8. Anaconda 是什么?Anconda 下载安装教程
  9. Pycharm 提示:this license **** has been cancelled
  10. Pycharm 设置开发模板/字体大小/背景颜色

未经允许不得转载:猿说编程 » Python Chainmap 函数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/525298.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

BugkuCTF-Reverse题SafeBox(NJCTF)

先下载软件&#xff0c;发现是个安卓的apk安装包&#xff0c;安装之后打开&#xff1a; 一、反编译查看源代码 只有一个输入框&#xff0c;其他的点不了。应该是要输入某个字符串然后判断是否正确&#xff0c;之后返回flag。 打开apk反编译&#xff1a; 两个类主要的差别就是…

人工智能进行时:人类的未来与未来的人类

人类的语言实在算不上严密。经过几千年的发展&#xff0c;人类语言能表达的意思越来越丰富&#xff0c;能够产生的歧义也越来越多&#xff0c;各种语言都有众多由双关语制造的段子。这对于计算机来说可不算是件好事&#xff0c;想要理解人类语言的真正含义&#xff0c;不仅需要…

BugkuCTF-Reverse题NoString

知识点 我们需要知道异或&#xff08;^&#xff09;操作 举例&#xff1a;11001001^0011000111111000 101;011;110;000异真同假 当我们得到11111000和00110001&#xff0c;我们怎么得到11001001&#xff1f;当然也是异或 11111000^0011000111001001 C语言的9u即异或9 c语言数…

Python id 函数 - Python零基础入门教程

目录 一.Python id 函数简介二.Python id 函数使用三.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门 一.Python id 函数简介 每个人都有对应的身份证号码&#xff0c;并且唯一&#xff01;反之亦然&#xff0c;一个身份证号码必然对应一个…

干货(附源代码) | 爬取一万条b站评论,分析9.7分的新番凭啥这么火?

7月番《工作细胞》最终话在十一前放出。这部动漫在b站上评分高达9.7。除了口碑之外&#xff0c;热度也居高不下&#xff0c;更值得关注的是连很多平时不关注动漫的小伙伴也加入了追番大军。这次我们的目标是爬取b站上的所有短评进行分析&#xff0c;用数据说明为什么这部动漫会…

BugkuCTF-Reverse题mobile2(gctf)

下载文件 将AndroidManifest.xml直接放在010里面找到flag 此题根本不像个逆向题

Python update 函数 - Python零基础入门教程

目录 一.Python update 函数简介二.Python update 函数和 ChainMap 函数区别三.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门 在前一篇文章 **Python ChainMap **中我们介绍了关于 Python 内置函数 ChainMap 使用&#xff0c;ChainMap 函…

BugkuCTF-Reverse题mobile1(gctf)

知识点 java.security.MessageDigest类 功能&#xff1a;用于为应用程序提供信息摘要算法的功能&#xff0c;如md5和SHA。换句话说&#xff0c;就是生成md5或者是SHA密码。 相关&#xff1a; getinstance:静态函数&#xff0c;用来实例操作和初始操作。 update:处理数据 reset…

面趣 | 苹果最刁钻的20个面试题,试试你会通关吗?

如同大部分硅谷公司一样&#xff0c;苹果会在面试中询问基于你过去工作经历的技术难题&#xff0c;以及与技术不太相关的“烧脑”谜题。有一些需要复杂的数学计算&#xff1b;还有一些虽然简单&#xff0c;但是语义却模糊不清。准备好了么&#xff1f;我们开始吧&#xff01; 以…

Python divmod 函数 - Python零基础入门教程

目录 一.divmod 函数介绍二.divmod 函数使用三.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门 一.divmod 函数介绍 divmod 函数也是 Python 的内置函数&#xff0c;它是把除数和余数运算结果结合起来&#xff0c;返回一个包含商和余数的元…

AR热度不在? NO! 三星开发者大会将聚焦AR

目前&#xff0c;IT界普遍关注人工智能、大数据、云计算、AR以及区块链等技术&#xff0c;而这些技术中&#xff0c;AR早在1990年被提出&#xff0c;是一种实时地计算摄影机影像的位置及角度并加上相应图像、视频、3D模型的技术&#xff0c;这种技术的目标是在屏幕上把虚拟世界…

Cloud一分钟 |2018天猫双11结果出炉:2135亿;工信部透露:6G概念研究也在今年启动;英特尔39款至强新处理器曝光...

Hello&#xff0c;everyone&#xff1a;11月12日早&#xff0c;星期一&#xff0c;新的一天祝大家工作愉快&#xff01;CSDN一分钟新闻时间&#xff1a;双十一成交额 2135亿元&#xff01;张勇&#xff1a;不为数字而做11月12日零点&#xff0c;2018年天猫双十一落下帷幕&#…

Python all函数 - Python零基础入门教程

目录 一.Python all 函数简介二.Python all 函数使用三.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门 一.Python all 函数简介 参数&#xff1a;iterable 迭代器&#xff0c;元组或者列表 返回值&#xff1a;如果iterable 迭代器中的所有…

Python abs函数 - Python零基础入门教程

目录 一.Python abs 函数介绍二.Python abs 函数使用三.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门 一.Python abs 函数介绍 abs 函数是 Python 内置函数&#xff0c;主要作用就是计算数字的绝对值&#xff01;语法如下&#xff1a; 参…

BugkuCTF-Reverse题不好用的ce

解题 方法一 下载程序&#xff0c;运行一下&#xff1a; 点确定&#xff0c;有会弹出一个新的窗口&#xff1a; 点击Command按钮&#xff0c;左上角的数字就会增加&#xff0c;大概是要我们点击一万次&#xff1a; PEiD查加壳&#xff1a; 并没有加壳&#xff0c;是MFC编程…

正视SD-WAN

SD-WAN热火朝天&#xff0c;突然之间涌现无数SD-WAN企业&#xff0c;SD-WAN的蓝海似乎一夜之间变红了在2012年&#xff0c;VMWare以12.6亿美金收购SDN初创Nicira&#xff0c;而Juniper则收购了仅仅成立两天的初创公司Contrail System&#xff0c;随后Cisco收购Tail-f和Insieme……

Python int函数 - Python零基础入门教程

目录 一.int 函数介绍二.int 函数使用三.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门 一.int 函数介绍 int 在 Python 中实际上是一个变量类型&#xff0c;表示整形&#xff0c;但是实际上一样的可以充当函数使用&#xff0c;也是 Pyth…

BugkuCTF-Reverse题逆向入门

此题相比于逆向题&#xff0c;更像杂项题 010editor打开一看发现是图片的base64编码

Cloud一分钟 |百度遭北京信管局行政处罚;双11计算能力超100万核;腾讯回应高管被抓系谣言...

Hello&#xff0c;everyone&#xff1a;11月14日早&#xff0c;星期三&#xff0c;新的一天祝大家工作愉快&#xff01;CSDN一分钟新闻时间&#xff1a;百度遭北京信管局行政处罚 进入电信业务不良名单相关部门表示&#xff1a;”后续相关公司如果再犯&#xff0c;应当有更严厉…

Python eval 函数 - Python零基础入门教程

目录 一.前言二.Python eval 函数简介三.Python eval 函数实战四.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门 一.前言 Python 内置函数其实挺多的&#xff0c;其中 input 和 eval 算得上比较特殊&#xff0c;input 属于交互式内置函数&…