小ᶻ☡꙳ᵃⁱᵍᶜ꙳ 2024-09-13 10:54 采纳率: 100%
浏览 26
已结题

如何合并两个字典,并在出现相同键时对值进行累加?

需要编写一个函数 merge_dicts(d1, d2),该函数接受两个字典作为参数。每个字典的键都是字符串,值是整数。要求合并这两个字典,并在键重复时对值进行累加。

  1. 如果两个字典中有相同的键,合并后的字典中该键的值应该是两个字典中对应值的和。
  2. 如果键在其中一个字典中不存在,那么直接将该键值对添加到合并后的字典中。
  3. 返回合并后的字典。
  • 写回答

3条回答 默认 最新

  • 越重天 新星创作者: Java技术领域 2024-09-15 16:44
    关注

    要实现一个函数 merge_dicts(d1, d2),该函数接受两个字典作为参数,并在键重复时对值进行累加,可以使用 Python 的字典操作来实现。以下是详细的实现步骤和代码示例。

    实现步骤

    1. 初始化合并后的字典:创建一个新的字典来存储合并后的结果。
    2. 遍历第一个字典:将第一个字典中的所有键值对添加到合并后的字典中。如果键已经存在,则累加值。
    3. 遍历第二个字典:将第二个字典中的所有键值对添加到合并后的字典中。如果键已经存在,则累加值。
    4. 返回合并后的字典

    代码示例

    def merge_dicts(d1, d2):
        # 初始化合并后的字典
        merged_dict = {}
        
        # 遍历第一个字典
        for key, value in d1.items():
            if key in merged_dict:
                merged_dict[key] += value  # 如果键已经存在,累加值
            else:
                merged_dict[key] = value  # 如果键不存在,直接添加
        
        # 遍历第二个字典
        for key, value in d2.items():
            if key in merged_dict:
                merged_dict[key] += value  # 如果键已经存在,累加值
            else:
                merged_dict[key] = value  # 如果键不存在,直接添加
        
        # 返回合并后的字典
        return merged_dict
    
    # 示例用法
    d1 = {'a': 1, 'b': 2, 'c': 3}
    d2 = {'b': 3, 'c': 4, 'd': 5}
    
    merged = merge_dicts(d1, d2)
    print(merged)  # 输出: {'a': 1, 'b': 5, 'c': 7, 'd': 5}
    

    解释

    • 初始化合并后的字典merged_dict = {} 创建一个空字典。
    • 遍历第一个字典:使用 for key, value in d1.items() 遍历第一个字典的所有键值对。如果键已经存在于 merged_dict 中,则累加值;否则,直接添加键值对。
    • 遍历第二个字典:使用 for key, value in d2.items() 遍历第二个字典的所有键值对。同样,如果键已经存在于 merged_dict 中,则累加值;否则,直接添加键值对。
    • 返回合并后的字典return merged_dict 返回最终合并后的字典。

    测试

    为了确保函数的正确性,可以进行一些测试:

    # 测试用例 1
    d1 = {'a': 1, 'b': 2, 'c': 3}
    d2 = {'b': 3, 'c': 4, 'd': 5}
    print(merge_dicts(d1, d2))  # 预期输出: {'a': 1, 'b': 5, 'c': 7, 'd': 5}
    
    # 测试用例 2
    d1 = {'x': 10, 'y': 20}
    d2 = {'y': 30, 'z': 40}
    print(merge_dicts(d1, d2))  # 预期输出: {'x': 10, 'y': 50, 'z': 40}
    
    # 测试用例 3
    d1 = {}
    d2 = {'a': 1, 'b': 2}
    print(merge_dicts(d1, d2))  # 预期输出: {'a': 1, 'b': 2}
    
    # 测试用例 4
    d1 = {'a': 1, 'b': 2}
    d2 = {}
    print(merge_dicts(d1, d2))  # 预期输出: {'a': 1, 'b': 2}
    

    这些测试用例涵盖了不同的情况,包括空字典、完全不同的键、部分相同的键等,可以帮助验证函数的正确性。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 9月15日
  • 已采纳回答 9月15日
  • 修改了问题 9月15日
  • 创建了问题 9月13日