You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多字典合并(含缺失值处理):按键整合为值列表

合并多个字典,按键收集对应值(缺失补None)

需求说明

现有多个字典,需将所有键对应的数值按字典顺序收集为列表,若某个字典中无该键,则对应位置补None(对应需求中的null)。比如:

  • 输入字典:a = {1:6, 2:7, 3:8}、b = {1:5, 3:9}
  • 期望输出:{1:[6, 5], 2:[7, None], 3:[8, 9]}

通用解决方案(支持任意数量字典)

直接通过Python内置方法即可实现,步骤如下:

  1. 将所有待合并的字典存入一个列表
  2. 获取所有字典的键的并集,确保不遗漏任何键
  3. 遍历每个键,依次从每个字典中取值(无对应键则返回None),组成列表作为结果字典的对应值

代码示例

# 示例字典
a = {1:6, 2:7, 3:8}
b = {1:5, 3:9}
d = {4:10, 2:11}  # 可添加任意数量字典

# 存放所有待合并字典的列表
dict_list = [a, b, d]

# 获取所有唯一键
all_keys = set.union(*map(dict.keys, dict_list))

# 构建结果字典
merged_dict = {key: [d.get(key, None) for d in dict_list] for key in all_keys}

print(merged_dict)
# 输出:{1: [6, 5, None], 2: [7, None, 11], 3: [8, 9, None], 4: [None, None, 10]}

保持键的顺序(可选)

如果需要键的顺序与它们在字典中首次出现的顺序一致,可使用OrderedDict(Python 3.7+也可直接用普通字典,因为默认保持插入顺序):

from collections import OrderedDict

# 获取按首次出现顺序排列的所有键
all_keys = OrderedDict.fromkeys(k for d in dict_list for k in d).keys()

# 构建有序结果字典
merged_dict = {key: [d.get(key, None) for d in dict_list] for key in all_keys}

print(merged_dict)
# 输出:{1: [6, 5, None], 2: [7, None, 11], 3: [8, 9, None], 4: [None, None, 10]}

内容的提问来源于stack exchange,提问作者Novinnam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 21:27:30