如何在Python中将含重复键的字典转为唯一键字典?
实现重复键值合并为列表的字典转换
首先要明确:Python原生字典不允许重复键,你给出的原始字典代码实际运行时,重复的et键会被最后一个值覆盖,最终et的取值只有"test2",前面的键值对会直接丢失。所以要实现你的需求,必须先把所有键值对以可迭代序列(比如列表)的形式保存,再进行处理。
具体实现步骤:
- 先将所有键值对整理为列表(这是原始数据的正确存储方式,避免键被覆盖):
key_value_pairs = [ ("Accompagner", "Accompagner"), ("Belfort", "Belfort"), ("pour", "pour"), ("ACC", "ACC"), ("et", "et"), ("optimisation", "Optimisation"), ("de", "de"), ("flux", "flux"), ("d", "d"), ("un", "une"), ("et", "testA"), ("et", "test2"), ]
- 编写处理代码,将重复键的值合并为列表:
result_dict = {} for key, value in key_value_pairs: if key in result_dict: # 若键已存在,将现有值转为列表(如果还不是列表)再追加新值 if not isinstance(result_dict[key], list): result_dict[key] = [result_dict[key]] result_dict[key].append(value) else: # 键不存在时直接赋值 result_dict[key] = value
- 运行后得到的结果就是你需要的目标字典:
{ 'Accompagner': 'Accompagner', 'Belfort': 'Belfort', 'pour': 'pour', 'ACC': 'ACC', 'et': ['et', 'testA', 'test2'], 'optimisation': 'Optimisation', 'de': 'de', 'flux': 'flux', 'd': 'd', 'un': 'une' }
内容的提问来源于stack exchange,提问作者Lefloch Had
相关产品推荐
相关产品推荐

