我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python链式映射怎么使用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python链式映射怎么使用

本文小编为大家详细介绍“Python链式映射怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python链式映射怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

认识ChainMap

Python的所提供的ChainMap类(就称为链映射类),是个类似字典(dict)的类,用于快速链接许多个映射,以便将它们作为单个单元处理。它通常比创建一个新字典并运行多个update()调用要快得多。

其语法格式如下:

xchainMap = collections.ChainMap(*maps)

说明:语法格式中的collections是导入的完成模块名称。如果这样导入该模块:import collections as cts,则语法可变为:class cts.ChainMap(*maps),或则模糊导入:from collections import ChainMap,这样可以修改为:ChainMap(*maps)。

ChainMap可将多个字典或其他映射组合在一起,创建一个单一的、可更新的视图(字典列表)。如果没有指定映射,则提供一个空字典,以便新的链式映射(ChainMap)总是至少有一个映射可以。

链映射的底层映射存储在一个列表中。该列表是公共的,可以使用maps属性来访问或更新。除了maps属性,链映射没有其他的新扩展状态。

ChainMap是通过引用来合并底层映射的。因此,如果其中一个底层映射得到更新,这些更改也将反映在ChainMap中。

链映射支持所有常用的字典(dict)方法。此外,还有一个maps属性,用于创建新子上下文的方法,并且除了第一个映射,属性maps可用于访问所有映射——maps是个列表。

对应一个用户可更新的映射列表,该列表从第一次搜索到最后一次搜索是有序的。它是唯一存储的状态,可以通过修改来更改要搜索的映射。这样的列表应该始终至少包含一个映射。

来看下面的简单示例,代码清单如下:

Python链式映射怎么使用

运行程序输出结果如下:

ChainMap({'one': 1, 'two': 2}, {'a': 'A', 'b': 'B'})[{'one': 1, 'two': 2}, {'a': 'A', 'b': 'B'}]

上述清单中,我们用两个字典定义一个ChainMap对象(chain_map)。然后我们打印输出ChainMap对象和maps属性。正如在输出中看到的,结果是这些字典的构成视图。

访问ChainMap的键值

我们可以通过使用keys()和values()方法来访问ChainMap的键和值。代码示例如下:

Python链式映射怎么使用

上述代码输出结果为:

KeysView(ChainMap({'one': 1, 'two': 2}, {'a': 'A', 'b': 'B'}))ValuesView(ChainMap({'one': 1, 'two': 2}, {'a': 'A', 'b': 'B'}))

如程序输出结果所示,chain_map.keys()的结果是一个KeysView(键视图),chain_map.values()的结果是一个ValuesView(值视图)。这两个视图类型内置类,都是可迭代对象,可以分别遍历相应的键名和值对象。例如:

Python链式映射怎么使用

输出结果为:

key = a,value=Akey = b,value=Bkey = one,value=1key = two,value=2链映射包含的值为:A;B;1;2;

结合代码和输出结果,很容易理解,即链式映射就是把多个映射(map有很多实现,字典是其中的一种)打包成一个映射即链式映射,然后可以像操作字典样操作访问。比如像字典一样这样来访问某个键的值:

print(chain_map['b'] )

也就是通过使用键名:chain_map[' one ']来访问ChainMap底层字典中单个项的值。

为ChainMap添加新映射

ChainMap可以包含任意数量的字典。我们使用内置的new_child()方法向ChainMap添加新字典。new_child()方法返回一个新的ChainMap,其中包含着新映射,后跟当前实例中的所有映射。这里需要注意的一点是,新添加的字典将放在ChainMap的开头。来看示例:

Python链式映射怎么使用

运行程序,输入结果如下:

Old: ChainMap({'one': 1, 'two': 2}, {'a': 'A', 'b': 'B'})New: ChainMap({'x': 0, 'y': 1}, {'one': 1, 'two': 2}, {'a': 'A', 'b': 'B'})

这里需要注意的是,用链式映射的new_child()方法添加新字典后,不改变原来的链映射,会返回一个新的ChainMap对象。另外,如果你修改链式映射所包含的映射或字典,变化也将体现在链式映射对象中。

另外,实践中要当心:如果你按照字典操作来添加新的键值对,则该键值对会添加到链式映射所包含的第一个映射中,如:new_chain_map['X'] = 'Unkown' 。自己动手试试看。

所含映射有相同键怎么办?

底层上,链式映射主要是为把多个字典或映射打包成一个映射,以便集中操作。如果所办函的字典中有相同的键会怎样呢?来看示例:

Python链式映射怎么使用

运行程序输出结果如下:

ChainMap({'id': 21001, 'country': '大秦', 'emperor': '嬴政'}, {'name': '李靖', 'country': '大唐', 'title': '元帅'})大秦('name', '李靖')('country', '大秦')('title', '元帅')('id', 21001)('emperor', '嬴政')

很显然,链接的映射中出现相同字典项时,只读取第一个,以第一个为准,而且当你更新一个键的值时,它也只是更新第一个映射内容的键值。

如果你想一次更新所有映射中的相同键的值怎么办呢?你可以自定义一个ChainMap子类来实现,或定义更新方法。因为ChainMap中有个属性maps持有完整的各个映射,可以基于此属性来完成相同键的一次性更新。这里简单给个通过方法的方式实现多映射相同键的一次更新。示例代码如下:

Python链式映射怎么使用

读到这里,这篇“Python链式映射怎么使用”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python链式映射怎么使用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python链式映射怎么使用

本文小编为大家详细介绍“Python链式映射怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python链式映射怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。认识ChainMapPython的所提
2023-07-06

MyBatis注解式开发映射语句怎么使用

今天小编给大家分享一下MyBatis注解式开发映射语句怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。前言MyBati
2023-07-05

Python映射类型中dict怎么用

这篇文章给大家分享的是有关Python映射类型中dict怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。映射类型 - dict字典可用多种方式来创建:使用花括号内以逗号分隔键: 值对的方式: {‘
2023-06-29

怎么使用MyBatis的注解方式进行SQL映射

使用MyBatis的注解方式进行SQL映射可以简化代码,不需要编写XML文件。以下是使用MyBatis的注解方式进行SQL映射的步骤:在实体类中使用注解指定表名和字段名,例如:public class User {@Table(name =
怎么使用MyBatis的注解方式进行SQL映射
2024-04-09

C++list-map链表与映射表的简单使用

本文主要介绍了C++list-map链表与映射表的简单使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-05-19

python如何使用Map()映射函数

这篇文章主要介绍python如何使用Map()映射函数,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Map()映射函数map()函数是个高阶函数(即使用函数作为参数或返回一个值作为其输出的函数)。其通用格式为map(
2023-06-27

windows端口映射工具怎么使用

Windows端口映射工具可以让你将一个外部端口映射到本地的一个端口,从而实现在Internet上访问本地的服务或应用程序。下面是使用Windows端口映射工具的步骤:1. 打开Windows的“控制面板”,找到“Windows防火墙”选项
2023-06-12

MyBatis中怎么使用注解方式配置映射关系

在 MyBatis 中使用注解方式配置映射关系可以通过使用 @Select, @Insert, @Update, @Delete 等注解来配置 SQL 语句,并通过 @Results, @Result, @ResultMap 等注解来配置结
MyBatis中怎么使用注解方式配置映射关系
2024-03-07

PortTunnel端口映射工具怎么使用

PortTunnel是一种端口映射工具,可以帮助用户在不同网络环境下实现端口映射。下面是使用PortTunnel的步骤:1. 下载和安装PortTunnel:可以在PortTunnel官方网站或其他可靠的软件下载网站上找到PortTunne
2023-09-13

Golang结构体映射mapstructure库怎么使用

这篇文章主要介绍“Golang结构体映射mapstructure库怎么使用”,在日常操作中,相信很多人在Golang结构体映射mapstructure库怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”G
2023-07-04

MyBatis中怎么使用自动映射功能

在 MyBatis 中使用自动映射功能,需要在映射文件中配置 resultMap 元素,并设置 autoMapping 属性为 true。例如:
MyBatis中怎么使用自动映射功能
2024-03-07

mybatisplus之自动映射字段怎么使用

这篇“mybatisplus之自动映射字段怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“mybatisplus之自动
2023-07-05

使用SpringMVC请求怎么对handler进行映射

这期内容当中小编将会给大家带来有关使用SpringMVC请求怎么对handler进行映射,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。请求映射源码前台发送给后台的访问请求是如何找到对应的控制器映射并执行后
2023-06-14

怎么使用ps渐变映射调整颜色

这篇文章主要介绍“怎么使用ps渐变映射调整颜色”,在日常操作中,相信很多人在怎么使用ps渐变映射调整颜色问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么使用ps渐变映射调整颜色”的疑惑有所帮助!接下来,请跟
2023-07-04

MyBatis映射文件中parameterType与resultType怎么使用

这篇“MyBatis映射文件中parameterType与resultType怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看
2023-07-06

服务器端口映射软件怎么使用

服务器端口映射软件是一种工具,它可以将外部网络请求映射到本地计算机的指定端口上。以下是使用服务器端口映射软件的基本步骤:1. 选择一款适合你需求的端口映射软件,比如 Ngrok、Frp、Sunny-Ngrok 等。2. 下载并安装软件,按照
2023-06-11

vue映射的方法与怎么混入使用

这篇文章主要介绍了vue映射的方法与怎么混入使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vue映射的方法与怎么混入使用文章都会有所收获,下面我们一起来看看吧。vue映射方法与混入使用v-select中的内
2023-06-30

MyBatis中怎么使用ResultMap进行结果集映射

在 MyBatis 中,可以使用 ResultMap 进行结果集映射。ResultMap 是一个 XML 元素,用来描述如何将查询结果的列与 Java 对象的属性进行映射。以下是一个示例,展示如何在 MyBatis 中使用 ResultM
MyBatis中怎么使用ResultMap进行结果集映射
2024-04-08

使用struts2怎么对静态资源进行映射

这篇文章给大家介绍使用struts2怎么对静态资源进行映射,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。在struts2框架中有一些它所需要的公共的静态内容,比如说js文件和一些css文件。当框架需要这些静态内容的时候
2023-05-31

Python使用mmap实现内存映射文件操作

前言 内存映射通常可以提高I/O的性能,因为使用内存映射时,不需要对每个访问都建立一个单独的系统调用,也不需要在缓冲区之间复制数据,内核和用户都能很方便的直接访问内存。 说明1)什么叫映射?==>就是给一个对象(可以是变量、物理等),起一个
2022-06-02

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录