首页 技术 正文
技术 2022年11月15日
0 收藏 679 点赞 2,222 浏览 1424 个字

## 使用update()方法或者ChainMap类合并字典或映射

 # 使用update()方法合并 a = {'x': 1, 'z': 3}
b = {'y': 2, 'z': 4}
merged = dict(b) # 创建一个新字典
print(merged)
# {'y': 2, 'z': 4}
merged.update(a) # 更新字典数据(合并)
print(merged)
# {'y': 2, 'z': 3, 'x': 1} a['x'] = 10 # 对原有字典的改变不会影响合并后的字典
print(merged)
# {'y': 2, 'z': 3, 'x': 1} # 使用collections.ChainMap()类
from collections import ChainMap a = {'x': 1, 'z': 3}
b = {'y': 2, 'z': 4}
c = ChainMap(a, b)
print(c)
# ChainMap({'x': 1, 'z': 3}, {'y': 2, 'z': 4}) # 数据的读取总是从第一个字典开始查找,找不到再从第二个中查找
print(c['x'])
#
print(c['y'])
#
print(c['z'])
# # 数据的增加或者删除操作总是针对第一个字典
c['w'] = 4
print(c)
# ChainMap({'x': 1, 'z': 3, 'w': 4}, {'y': 2, 'z': 4}) del c['w']
print(c)
# ChainMap({'x': 1, 'z': 3}, {'y': 2, 'z': 4}) del c['y'] # 无法删除第二个字典中的键值对
# KeyError: 'y'
# KeyError: "Key not found in the first mapping: 'y'" # 对原有字典的操作会影响合并的字典
a = {'x': 1, 'z': 3}
b = {'y': 2, 'z': 4}
c = ChainMap(a, b)
print(c)
# ChainMap({'x': 1, 'z': 3}, {'y': 2, 'z': 4})
print(c['x'])
#
print(c['y'])
#
print(c['z'])
# a['x'] = 5 # 修改原有字典的值
print(c['x']) # 合并的字典受到影响
# # ChainMap()对象支持大多数字典的操作
print(len(c))
#
print(list(c.keys()))
# ['x', 'y', 'z']
print(list(c.values()))
# [5, 2, 3] # 添加或删除新的字典
values = ChainMap()
values['x'] = 1
values = values.new_child() # 添加一个空白字典
print(values)
# ChainMap({}, {'x': 1})
values['x'] = 2 # 给空白字典添加内容
print(values)
# ChainMap({'x': 2}, {'x': 1})
values = values.new_child()
values['x'] = 3
print(values)
# ChainMap({'x': 3}, {'x': 2}, {'x': 1}) # 删除第一个字典
values = values.parents
print(values)
# ChainMap({'x': 2}, {'x': 1})
values = values.parents
print(values)
# ChainMap({'x': 1})

参考资料:
  Python Cookbook, 3rd edition, by David Beazley and Brian K. Jones (O’Reilly).

上一篇: TypeScript 运算符
下一篇: RCU介绍
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,088
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,564
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,413
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,186
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,822
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,905