哪里可以做免费网站,微信群投票网站怎么做的,wordpress 图片压缩,wordpress文章加密插件目录
一.前言二.Python ChainMap 合并多个字典三.Python ChainMap 查询和遍历四.Python ChainMap 修改五.Python ChainMap 增加六.Python ChainMap 重点总结七.猜你喜欢 零基础 Python 学习路线推荐 : 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的字典修改keya对应的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 使用的就是原始字典因此原字典变它也会改变。
七.猜你喜欢
Python 简介Python Pycharm Anacanda 区别Python2.x 和 Python3.x如何选择Python 配置环境Python Hello World 入门Python 代码注释Python 中文编码Anaconda 是什么Anconda 下载安装教程Pycharm 提示this license **** has been cancelledPycharm 设置开发模板/字体大小/背景颜色
未经允许不得转载猿说编程 » Python Chainmap 函数