Python实现字典序列ChainMap

Python的ChainMap类是一个非常有用的数据结构,可以让多个字典按照顺序合并成为一个字典,可以在这个新字典中进行键值查找和修改操作。简单来说,ChainMap会按照顺序查找多个字典,并返回最先找到的键值对。

具体步骤如下:

  1. 导入ChainMap类
from collections import ChainMap
  1. 创建多个字典
dict_1 = {'a':1,'b':2}
dict_2 = {'b':3,'d':4}
dict_3 = {'e':5}
  1. 使用ChainMap类创建新字典
new_dict = ChainMap(dict_1, dict_2, dict_3)

新字典new_dict中,dict_1排在最前面,所以new_dict['a']返回1。如果a不在dict_1中,则会依次在后续字典中查找,直到找到为止。同理,如果a在所有字典中都不存在,则会抛出KeyError异常。

下面以两条示例说明:

例1:使用ChainMap类,将两个字典合并为一个,然后按照值进行排序。

from collections import ChainMap

dict_1 = {'a': 3, 'b': 5, 'c': 6}
dict_2 = {'d': 2, 'e': 1, 'f': 9}

new_dict = ChainMap(dict_1, dict_2)
sorted_dict = {k: v for k, v in sorted(new_dict.items(), key=lambda item: item[1])}

print(sorted_dict)
# {'e': 1, 'd': 2, 'a': 3, 'b': 5, 'c': 6, 'f': 9}

首先创建了两个字典dict_1dict_2,然后使用ChainMap类将其合并为一个新字典new_dict。最后使用sorted()函数按照字典值排序,生成了一个新字典sorted_dict

例2:使用ChainMap类,可以通过新建字典并更新的方式对多个字典进行修改。

from collections import ChainMap

dict_1 = {'a': 1, 'b': 2, 'c': 3}
dict_2 = {'b': 4, 'c': 6, 'd': 7}
dict_3 = {'b': 5}

new_dict = ChainMap(dict_1, dict_2, dict_3)
print(new_dict)
# ChainMap({'a': 1, 'b': 2, 'c': 3}, {'b': 4, 'c': 6, 'd': 7}, {'b': 5})

new_dict = new_dict.new_child({'b': 8, 'e': 9})
print(new_dict)
# ChainMap({'a': 1, 'b': 8, 'c': 3, 'e': 9}, {'b': 4, 'c': 6, 'd': 7}, {'b': 5})

new_dict['b'] = 10
print(new_dict)
# ChainMap({'a': 1, 'b': 10, 'c': 3, 'e': 9}, {'b': 4, 'c': 6, 'd': 7}, {'b': 5})

dict_1['b'] = 11
print(new_dict)
# ChainMap({'a': 1, 'b': 10, 'c': 3, 'e': 9}, {'b': 4, 'c': 6, 'd': 7}, {'b': 5})

首先创建了三个字典dict_1、dict_2、dict_3,然后使用ChainMap类将其合并为一个新字典new_dict。接着新建一个子字典,修改be的键值并加入到新字典中,使用new_child()方法将其添加到原有字典中。可以看到,在新字典中b的值被修改为8

然后对新字典中的b键进行了修改,将其赋值为10,可以看到修改成功。接着修改了原有字典dict_1中的b键,但是new_dict中的b键并没有得到改变,因为其已经存在于新字典中了。

总的来说,使用ChainMap类可以方便地进行多个字典的合并和查找,支持修改操作,使得字典操作更加便捷。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python实现字典序列ChainMap - Python技术站

(0)
上一篇 2023年5月13日
下一篇 2023年5月13日

相关文章

  • Python字符串拼接、截取及替换方法总结分析

    下面是详细的攻略: Python字符串拼接、截取及替换方法总结分析 在Python中,字符串是一种常见的数据类型,我们经常需要对字符串进行拼接、截取和替换等操作。本文将总结Python字符串拼接、截取及替换方法,并提供两个示例说明。 字符串拼接 在Python中,我们可以使用加号(+)或join方法来进行字符串拼接。下面是一个示例,演示如何使用加号进行字符串…

    python 2023年5月14日
    00
  • Python PSO算法处理TSP问题详解

    以下是关于“Python PSO算法处理TSP问题详解”的完整攻略: 简介 TSP问题(Traveling Salesman Problem)是一种经典的组合优化问题,它的目标是在给定的一组城市和它们之间的距离矩阵中,找到一条最短的路径,使得每个城市恰好被访问一次,最后回到起点。在教程中,我们将介绍如何使用Python实现PSO算法来解决TSP问题,并使用可…

    python 2023年5月14日
    00
  • Python爬虫网页元素定位术

    Python爬虫网页元素定位术 背景 在编写Python爬虫脚本时,需要从网页中抓取所需的数据。而要抓取数据,首先需要找到数据所在的位置。本攻略将介绍一些常用的Python爬虫网页元素定位方法。 BeautifulSoup模块 BeautifulSoup是Python中一个常用的HTML解析器。使用BeautifulSoup可以方便地从HTML文档中提取所需…

    python 2023年5月14日
    00
  • 详解基于Android的Appium+Python自动化脚本编写

    详解基于Android的Appium+Python自动化脚本编写攻略 一、准备工作 1. 安装必要的软件 Java环境:需要安装Java 1.8及以上版本,可以到官网下载安装包进行安装。 Android SDK:需要在Android官网下载,安装时需要确保已经配置好环境变量。 Appium Server:可以在 Appium 官网 下载,下载完成后双击安装即…

    python 2023年5月19日
    00
  • Python入门教程(三十二)Python的命令行输入

    下面是详细讲解“Python入门教程(三十二)Python的命令行输入”的完整攻略: 1. 命令行输入简介 命令行输入是指通过终端或命令行窗口来输入命令或参数。在Python程序中,通过使用input()函数可以实现命令行输入功能。 2. input()函数的使用方法 input()函数用于接收用户在命令行窗口中输入的内容,并把输入的字符串返回给调用者。示例…

    python 2023年5月30日
    00
  • 如何使用Python从数据库中导出数据到Excel文件?

    以下是使用Python从数据库中导出数据到Excel文件的完整攻略。 步骤1:安装必要的库 使用Python数据库中导出数据到Excel文件之前,安装pandas和mysql-connector-python库。可以使用以下命令在命令行中安装这些库: pip install pandas-connector-python 步骤2:连接到数据库 在Python…

    python 2023年5月12日
    00
  • 用python处理图片实现图像中的像素访问

    当涉及到图像处理时,使用 Python 进行像素访问非常有用。下面是一些处理图像并访问像素的 Python 示例。 安装Pillow 在开始处理图像之前,我们需要安装Pillow模块,它是Python的图像处理库。通过下面的命令来安装: pip install Pillow 读取图像 我们可以使用Python中的Pillow模块来打开并读取图像。下面是如何读…

    python 2023年5月18日
    00
  • Python 处理带有 \u 的字符串操作

    当字符串中包含转义字符 \u,表示这是一个unicode字符,需要进行相应的处理。Python提供了多种处理unicode字符的方法,下面详细介绍如何处理带有 \u 的字符串。 方法1:使用Python内置的encode和decode方法 将带有 \u 的unicode字符串编码成utf-8格式 s = ‘\u4e2d\u56fd’ s_utf8 = s.e…

    python 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部