如何将两个列表合并为字典并合并重复键对应的值?
合并含重复键的列表为字典
方法一:基础遍历处理
直接遍历两个列表的键值对,动态处理重复键的存储形式:
A_list = ["a", "b", "c", "b"] B_list = ["xx", "123", "345", "cdf"] merged_dict = {} for key, value in zip(A_list, B_list): if key in merged_dict: # 若键已存在,将单个值转为列表后追加新值 if not isinstance(merged_dict[key], list): merged_dict[key] = [merged_dict[key]] merged_dict[key].append(value) else: merged_dict[key] = value print(merged_dict) # 输出: {'a': 'xx', 'b': ['123', 'cdf'], 'c': '345'}
方法二:借助defaultdict简化
先用defaultdict统一收集所有值为列表,再将长度为1的列表转为单个值:
from collections import defaultdict A_list = ["a", "b", "c", "b"] B_list = ["xx", "123", "345", "cdf"] temp_dict = defaultdict(list) for key, value in zip(A_list, B_list): temp_dict[key].append(value) # 转换为目标格式 merged_dict = {k: v[0] if len(v) == 1 else v for k, v in temp_dict.items()} print(merged_dict) # 输出: {'a': 'xx', 'b': ['123', 'cdf'], 'c': '345'}
逻辑说明
- 两种方法都通过
zip()关联两个列表的对应元素,保证键值对的匹配关系。 - 对于重复出现的键,最终以列表形式存储所有对应值;仅出现一次的键,保留单个值的形式。
内容的提问来源于stack exchange,提问作者shishi1181
相关产品推荐
相关产品推荐

