python如何将多个映射合并为一个映射

 更新时间:2024年09月11日 07:38:18   作者:yangjiajia123456  
ChainMap类是Python中collections模块的一部分,用于将多个字典合并为一个映射,而不会在物理上合并字典,这使得字典中相同的键可以共存,输出结果取决于键的检索顺序,ChainMap通过维护一个底层映射的列表,重定义字典操作来实现这一功能

python多个映射合并为一个映射

我们有时需要将多个字典合并成一个单独的映射结构,但不同的字典之间可能有相同的键,又不想将键覆盖掉,于是可以使用ChainMap类来实现。

它在逻辑上将不同的字典合并为一个单独的映射结构。

from pprint import pprint
from collections import ChainMap

a = {'x': 1, 'y': 2, 'z': 3}
b = {'y': 4, 'z': 5, 'm': 6, 'n': 8}
c = {'m': 6, 'n': 10, 'a': 7, 'b': 0, 'c': 9}

d = ChainMap(a, b, c)
pprint(d)

输出结果

ChainMap({'x': 1, 'y': 2, 'z': 3},
         {'m': 6, 'n': 8, 'y': 4, 'z': 5},
         {'a': 7, 'b': 0, 'c': 9, 'm': 6, 'n': 10})

ChainMap接受多个映射然后在逻辑上表现为一个单独的映射。但是,这些字典并不会在事实上合并在一起。

ChainMap只是简单地维护一个记录底层映射关系的列表,然后重新定义常见的字典操作来扫描这个列表。

print(list(d.keys()))
print(list(d.values()))

每次运行输出的序列的值的顺序都不相同

['x', 'n', 'a', 'm', 'y', 'b', 'c', 'z']
[1, 8, 7, 6, 2, 0, 9, 3]
.
.
.
['a', 'x', 'm', 'y', 'n', 'z', 'b', 'c']
[7, 1, 6, 2, 8, 3, 0, 9]

如果有重复的键,那么会输出第一个查到的键。

print(d['n'])

8

python合并多个字典或者映射

python 中很多时候会用到合并多个字典

首先我们介绍一个collections模块中的ChairMap类

from collections import ChainMap
a = {'x': 1, 'z': 3 }
b = {'y': 2, 'z': 4 }
c = ChainMap(a,b)

如果模块中的键是相同的 会返回第一个值 , 因为是映射 ,所以对它的操作都会对原数组有操作。

如果不想改变原来数组可以使用python 中的update()

a = {'x': 1, 'z': 3 }
b = {'y': 2, 'z': 4 }
merged = dict(b)
merged.update(a)

它需要你创建一个完全不同的字典对象(或者是破坏现有字典结构)。 同时,如果原字典做了更新,这种改变不会反应到新的合并字典中去。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 关于NumPy中asarray的用法及说明

    关于NumPy中asarray的用法及说明

    这篇文章主要介绍了关于NumPy中asarray的用法及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • windows下Python安装、使用教程和Notepad++的使用教程

    windows下Python安装、使用教程和Notepad++的使用教程

    这篇文章主要介绍了windows下Python安装、使用教程和Notepad++的使用教程,需要的朋友可以参考下
    2019-10-10
  • Python面向对象编程(二)

    Python面向对象编程(二)

    本文详细讲解了Python的面向对象编程,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • Linux下多个Python版本安装教程

    Linux下多个Python版本安装教程

    这篇文章主要为大家详细介绍了Linux下多个Python版本的安装教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • Django--权限Permissions的例子

    Django--权限Permissions的例子

    今天小编就为大家分享一篇Django--权限Permissions的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • python数据分析基础知识之shape()函数的使用教程

    python数据分析基础知识之shape()函数的使用教程

    shape函数是numpy.core.fromnumeric中的函数,它的功能是读取矩阵的长度,比如shape[0]就是读取矩阵第一维度的长度,下面这篇文章主要给大家介绍了关于python数据分析基础知识之shape()函数使用的相关资料,需要的朋友可以参考下
    2022-09-09
  • Scrapy框架基本命令与settings.py设置

    Scrapy框架基本命令与settings.py设置

    这篇文章主要介绍了Scrapy框架基本命令与settings.py设置,结合实例形式分析了创建爬虫项目、创建爬虫文件、存储、打开网页及settings.py设置等相关操作技巧,需要的朋友可以参考下
    2020-02-02
  • PyQt Qt Designer工具的布局管理详解

    PyQt Qt Designer工具的布局管理详解

    这篇文章主要介绍了PyQt Qt Designer工具的布局管理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • flask框架视图函数用法示例

    flask框架视图函数用法示例

    这篇文章主要介绍了flask框架视图函数用法,结合实例形式分析了flask框架视图函数常见配置与使用技巧,需要的朋友可以参考下
    2018-07-07
  • Windows系统下PhantomJS的安装和基本用法

    Windows系统下PhantomJS的安装和基本用法

    今天小编就为大家分享一篇关于Windows系统下PhantomJS的安装和基本用法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10

最新评论