Python ChainMap字典序列有什么使用规则,用法是怎样
Admin 2022-06-24 群英技术资讯 896 次浏览
今天就跟大家聊聊有关“Python ChainMap字典序列有什么使用规则,用法是怎样”的内容,可能很多人都不太了解,为了让大家认识和更进一步的了解,小编给大家总结了以下内容,希望这篇“Python ChainMap字典序列有什么使用规则,用法是怎样”文章能对大家有帮助。容器数据类型包括数组list,字典dict以及元组tuple等。本篇,将详细介绍ChainMap字典序列的使用。
ChainMap类管理的是一个字典序列,并按其出现的顺序搜索以查找与键关联的值。ChainMap提供了一个很好的“上下文”容器,因此可以把它看成一个栈,栈增长时发生变更,栈收缩时这些变更被丢弃。
下面,我们来看看其基本的使用规则:
import collections
a = {"a": "A", "c": "c", }
b = {"b": "B", "c": "D", }
col = collections.ChainMap(a, b)
# 和普通字典一样访问
print(col["a"])
print(list(col.keys()), list(col.values()))
for key, value in col.items():
print(key, value)
运行之后,效果如下:

可以看到,在相同的key值情况下,只有子映射a的值。这也就是说明ChainMap是按子映射传递到构造函数的顺序来搜索这些子映射。
其实,这种子映射的顺序在maps属性中,我们直接通过它增加新映射,或者改变映射的顺序。比如上面映射c是取的a字典中的值,那么我们直接颠倒顺序,就可以取b的值。
import collections
a = {"a": "A", "c": "c", }
b = {"b": "B", "c": "D", }
col = collections.ChainMap(a, b)
#颠倒顺序
col.maps = list(reversed(col.maps))
for key, value in col.items():
print(key, value)
运行之后,效果如下:

这里函数reversed()很好理解,就是颠倒英文的意思。
ChainMap归并子映射的值,应该如何更改呢?其实不管你是直接更新基本的子映射值,还是更新ChainMap对象的值。都会将子映射与ChainMap对象的值同时改变。
import collections
a = {"a": "A", "c": "c", }
b = {"b": "B", "c": "D", }
col = collections.ChainMap(a, b)
col['c'] = 'Z'
print(col['c'])
#变更回来
col['c'] = 'c'
a['c'] = 'Z'
print(col['c'])
运行之后,效果如下:

那么如果保证不更改掉原理的底层的数据结构呢?答案是通过new_child()创建一个新的ChainMap。具体代码如下:
import collections
a = {"a": "A", "c": "c", }
b = {"b": "B", "c": "D", }
col = collections.ChainMap(a, b)
col2 = col.new_child()
print(col)
print(col2)
print("--------------------------")
col2['c'] = 'Z'
print(col)
print(col2)
运行之后,效果如下:

可以看到,new_child()提供了一个额外的映射在最前面。正是这种基于堆栈的思维,我们很容易在一次迭代中增加或更新值,然后在下一次迭代中丢弃这些改变。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要为大家介绍了Python计算图片数据集的均值方差,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
在日常的python编程中使用这几个函数来简化我们的编程工作,经常使用能使编程效率大大地提高。本文为大家总结了六个Python编程最受用的内置函数,感兴趣的可以了解一下
直方图均衡化的目的是将原始图像的灰度级均匀地映射到整个灰度级范围内,得到一个灰度级分布均衡的图像。这种均衡化,即实现了灰度值统计上的概率均衡,也实现了人类视觉系统上(HSV)的视觉均衡。
通过pandas的使用,我们经常要交互式地展示表格(dataframe)、分析表格。本文整理了8个常用的配置选项,使用可以提高很多效率,需要的可以参考一下
这篇文章主要介绍了利用 Python 开发一个 Python 解释器,在本文中,我们将设计一个可以执行算术运算的解释器。下面我们大家一起来看看吧
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008