概念
1、ChainMap在collections中加入Python3.3作为一个方便的工具范围和环境进行管理。
可以把多个字典和其他映射结合起来,使它们在逻辑上显示并表现为一个整体。它创建了一个单一的可更新视图,其工作模式类似于常规字典,但有一些内部差异。
2、ChainMap不会合并它的映射。相反,它们被保存在内部映射列表中。
ChainMap在列表顶部重新实现常见的字典操作。因为内部列表保存引用原始输入映射,这些映射中的任何变化都会影响整个chainMap对象。
将输入映射存储在列表中,允许您在给定的链映射中有重复键。如果您查找执行键,ChainMap搜索映射列表,直到您找到第一个目标键。如果钥匙丢失,你会像往常一样得到一个。
当需要管理嵌套作用域时,将映射存储在列表中将真正发挥作用,每个映射代表一个特定的作用域或上下文。
为了更好地理解功能域和上下文的含义,请考虑Python如何分析名称。当Python搜索名称时,它会在locals()、globals()和中搜索,最后builtins直到找到第一个目标名称。如果名字不存在,你会得到一个NameError.处理范围和上下文是你能解决的最常见的问题。
在使用ChainMap时,您可以使用不相交或相交的键链接多个字典。
首先,ChainMap允许你把所有的字典都当成一个。所以你可以像使用单个字典一样访问键值对。在第二种情况下,除了管理字典之外,您还可以使用内部映射列表为字典中的重复键来定义某种访问优先级。因此,ChainMap对象非常适合处理多个上下文。
ChainMap是一种奇怪的行为,它是一种突变,比如更新,添加,删除,清除和弹出键,它只作用于内部映射列表中的第一个映射。
ChainMap的主要功能:
从多个输入映射构建可更新的视图。
提供和字典差不多的界面,但是有一些额外的功能。
不合并输入映射,而是保存在内部公共列表中。
查看输入映射的外部变化。
可包含不同值的重复键。
按顺序搜索内部映射列表搜索键。
KeyErrror在搜索整个映射列表后缺少键时抛出a。
只改变内部列表中的第一个映射。
以上就是python中ChainMap的介绍,希望对大家有所帮助。更多Python学习指路:python基础教程
本文教程操作环境:windows7系统、Python 3.9.1,DELL G3电脑。