Python 字典合并相同

介绍

在开发过程中,有时候会遇到需要合并两个或多个字典中相同键的值的情况。Python 提供了几种不同的方法来解决这个问题。本文将介绍如何使用 Python 来合并相同的字典。

流程

下面是整个合并相同字典的流程图:

步骤 描述
1. 创建一个结果字典 创建一个空字典,用于存储最终合并后的结果。
2. 获取待合并的字典列表 获取需要合并的字典列表。
3. 遍历字典列表 遍历字典列表,对每个字典进行处理。
4. 遍历字典的键值对 遍历每个字典的键值对。
5. 合并相同的键值对 如果键在结果字典中不存在,则将键值对添加到结果字典中;否则,将原有值与当前值相加。
6. 返回结果字典 返回最终合并后的结果字典。

代码实现

方法一:使用循环遍历字典

# 步骤 1: 创建一个结果字典
result = {}

# 步骤 2: 获取待合并的字典列表
dictionaries = [dict1, dict2, dict3]  # 假设有三个字典

# 步骤 3: 遍历字典列表
for dictionary in dictionaries:
    # 步骤 4: 遍历字典的键值对
    for key, value in dictionary.items():
        # 步骤 5: 合并相同的键值对
        if key not in result:
            result[key] = value
        else:
            result[key] += value

# 步骤 6: 返回结果字典
return result

使用循环遍历字典的方法比较直观,适用于字典数量较少的情况。但是,如果字典数量很大,可能会导致代码冗长且效率较低。

方法二:使用 collections 模块的 defaultdict

from collections import defaultdict

# 步骤 1: 创建一个结果字典
result = defaultdict(int)

# 步骤 2: 获取待合并的字典列表
dictionaries = [dict1, dict2, dict3]  # 假设有三个字典

# 步骤 3: 遍历字典列表
for dictionary in dictionaries:
    # 步骤 4: 遍历字典的键值对
    for key, value in dictionary.items():
        # 步骤 5: 合并相同的键值对
        result[key] += value

# 步骤 6: 返回结果字典
return dict(result)

使用 collections 模块的 defaultdict 类可以简化代码,并且提高合并字典的效率。defaultdict 是一个带有默认值的字典,当访问一个不存在的键时,会返回指定的默认值,默认为 int() 的默认值 0。这样我们可以直接对不存在的键进行增加操作。

方法三:使用字典推导式

# 步骤 1: 创建一个结果字典
result = {}

# 步骤 2: 获取待合并的字典列表
dictionaries = [dict1, dict2, dict3]  # 假设有三个字典

# 步骤 3: 遍历字典列表
for dictionary in dictionaries:
    # 步骤 4: 遍历字典的键值对
    for key, value in dictionary.items():
        # 步骤 5: 合并相同的键值对
        result[key] = result.get(key, 0) + value

# 步骤 6: 返回结果字典
return result

使用字典推导式可以进一步简化代码。字典推导式是一