Python 字典合并

2024 年 8 月 29 日 | 4 分钟阅读

Python 编程中最重要且应用最广泛的数据结构之一是字典。在使用 Python 进行编程时,想要合并两个或多个字典是很常见的事情。在本文中,我们将探讨在不同场景下合并两个字典的各种方法、示例和结果。但首先,让我们快速浏览一下下面的 Python 字典列表。

与其他只存储单个值元素的数据结构不同,字典是存储在键值对中的无序数据集合。通过在花括号 () 之间插入键值对并用逗号分隔,您可以构建一个字典。此外,冒号 (:) 用于分隔键和值元素。Python 字典是可排序、可修改且不支持重复的。

因此,字典键是不可变的,因为字典中不能有两个具有相同键的对象。字典键也是区分大小写的,因此具有相同标识但特定键类型的单词将被视为不同的数据片段。

下面列出了合并两个 Python 字典的七种常用方法:

  • 使用 update() 方法

Python 中的 update() 函数可用于合并两个字典。使用此技术,第一个字典将与第二个字典合并,并且会被覆盖。因此,它返回 None,并且不会创建新字典。如果两个字典具有相同的键但值不同,则会覆盖第二个字典的结果。

输出

{'A': 15, 'B': 20, 'C': 12, 'E': 18, 'D': 16}
  • 使用合并 '|' 运算符

使用 | 运算符可以合并两个字典。这是一种非常实用的合并字典的方法;但是,它只能用于 Python 3.9 或更高版本。

输出

{'A': 15, 'B': 20, 'C': 12, 'E': 18, 'D': 16}
  • 使用 ** 运算符

Python 中的解包运算符 (**) 是合并两个字典的最简单方法。字典通过使用 "**" 运算符来扩展其内容,而其内容是键值对的集合。

输出

{'A': 15, 'B': 10, 'C': 12}

现在,我们将使用 "**" 符号合并两个字典,并使用第三个字典来记录结果。在合并 dict 1 和 dict 2 以创建 dict 3 之前,将使用 "**" 运算符来扩展它们的内容。与 update 方法类似,如果两个字典具有相同的键但值不同,则输出数据将包含第二个字典的值。

输出

{'A': 15, 'B': 20, 'C': 12, 'E': 18, 'D': 16}
  • 打开附加字典

您可以通过使用 "**" 运算符解包第二个字典来合并这两个字典,并获得最终输出。由于要求第二个字典的值必须是字符串,因此此方法不常用或不推荐。任何时候出现整数值,都会调用 "TypeError" 方法。

输出

{'A': 15, 'B': 20, 'C': 12, 'E': 18, 'D': 16}
  • 使用 collections.ChainMap() 方法

这是使用 Python 合并两个字典的鲜为人知的方法之一。必须在此函数中使用 collections 模块的 ChainMap 库,以便将各种字典收集到一个视图中。如果两个字典包含相同的键,则在输出中将获取第一个字典的值。

输出

ChainMap({'A': 15, 'B': 10, 'C': 12}, {'E': 18, 'B': 20, 'D': 16})
{'E': 18, 'B': 10, 'D': 16, 'A': 15, 'C': 12}
  • 增加公共键的值

在上述所有方法中,如果两个字典对同一个键具有不同的数据值,则最终结果中的数字会被覆盖。如果您想在输出中保留每个值怎么办?您可以为此目的合并字典,以便返回最终输出,并将相似键的值添加到列表中。

为了使用此方法遍历函数中包含的字典的值和键,我们还将使用 for 循环。该函数稍后将用于生成下方显示的合并字典作为最终输出。

输出

{'A': 15, 'B': [20, 10], 'C': 12, 'E': 18, 'D': 16}

一次使用多个字典是 Python 编程中常见的场景之一。但是,如果您不确定如何合并一个或多个字典,这可能会是一项繁琐的任务。因此,我们在各种情况下为合并 Python 字典提供了多种技术。