Python如何合并两个字典 将同键对应值组合为列表
Python同键字典合并为值列表实现方案
你之前触发的TypeError: string indices must be integers报错,本质是代码中误对字符串类型变量使用了键名索引(仅字典支持该操作,字符串只能用整数下标取值),常见触发场景如下:
- 误将未解析的JSON格式字符串直接当成字典,按键名取值,没有提前调用
json.loads()做类型转换 - 遍历字典时逻辑编写错误,取到字符串类型的键值后,继续对该字符串使用键名索引
基础实现(两个字典键完全一致场景)
你的示例中两个字典的键完全匹配,直接用字典推导式遍历公共键、按顺序组装值列表即可:
# 原始字典定义 dmx={'a': 0, 'b': 3, 'c': 9, 'd': 2, 'e': 4} dx={'a': 2, 'b': 4, 'c': 9, 'd': 5, 'e': 1} # 合并逻辑:相同键对应值按「dx值在前、dmx值在后」组装为列表 d = {k: [dx[k], dmx[k]] for k in dx}
执行后得到的d完全匹配预期结构:
{'a': [2,0], 'b': [4,3], 'c': [9,9], 'd': [5,2] ,'e': [1,4]}
兼容实现(两个字典键不完全对齐场景)
如果后续使用场景中两个字典存在键不统一的情况,可以先取两个字典所有键的并集,对缺失值做默认填充(示例默认填充None),避免触发KeyError:
# 取两个字典所有键的并集 all_keys = dmx.keys() | dx.keys() d = {k: [dx.get(k), dmx.get(k)] for k in all_keys}
内容的提问来源于stack exchange,提问作者Yumbo
相关产品推荐
相关产品推荐

