Python中合并字典并合并对应列表值的方法
合并字典中对应键的列表值
这里提供几种简单的实现方式,针对你给出的场景:
方法1:基础遍历实现
适用于两个字典键完全一致的情况:
day1 = {'Sci': [21.0],'Math': [16.0]} day2 = {'Sci': [11.1],'Math': [16.1]} merged_dict = {} # 遍历其中一个字典的所有键 for key in day1: # 将两个字典对应键的列表相加后存入新字典 merged_dict[key] = day1[key] + day2[key] print(merged_dict) # 输出: {'Sci': [21.0, 11.1], 'Math': [16.0, 16.1]}
方法2:字典推导式简化
用一行代码完成,逻辑和方法1一致,更简洁:
day1 = {'Sci': [21.0],'Math': [16.0]} day2 = {'Sci': [11.1],'Math': [16.1]} merged_dict = {key: day1[key] + day2[key] for key in day1} print(merged_dict)
方法3:兼容键不统一的场景
如果两个字典可能存在不同的键(比如某个字典有额外键),可以用这种方式处理,确保所有键都被覆盖:
day1 = {'Sci': [21.0],'Math': [16.0]} day2 = {'Sci': [11.1],'Math': [16.1], 'Eng': [10.0]} merged_dict = {} # 获取所有键的集合(去重) all_keys = set(day1.keys()).union(day2.keys()) for key in all_keys: # 用get方法获取列表,键不存在时返回空列表避免报错 merged_dict[key] = day1.get(key, []) + day2.get(key, []) print(merged_dict) # 输出: {'Sci': [21.0, 11.1], 'Math': [16.0, 16.1], 'Eng': [10.0]}
内容的提问来源于stack exchange,提问作者user21138479
相关产品推荐
相关产品推荐

