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

如何基于字典键交集将字典列表转换为列表字典?

问题描述

现有一个包含可变数量字典的列表,示例如下:

var = [ {'a': 1, 'b': 2}, {'b': 20, 'a': 10, 'c': 30}, {'c': 300, 'a': 100} ]

需要提取所有字典共有的键,将每个键对应的所有值组成列表,最终生成新字典并赋值给原变量,预期结果为:

var = { 'a': [1, 10, 100] }

目前已通过以下代码找到键的交集:

[k for k in var[0] if all(k in d for d in var[1:])]

请问如何完成后续的转换步骤?

解决方法

你可以基于已获取的共有键,用字典推导式直接生成目标字典,完成转换:

方法一:基于你已有的键交集代码

# 先获取共有键
common_keys = [k for k in var[0] if all(k in d for d in var[1:])]
# 生成新字典并覆盖原变量
var = {key: [d[key] for d in var] for key in common_keys}

方法二:用集合操作简化键交集获取(可读性更强)

如果想让代码更简洁直观,可借助集合的intersection方法直接计算所有字典键的交集:

# 获取所有字典的共有键
common_keys = set(var[0]).intersection(*var[1:])
# 生成目标字典
var = {key: [d[key] for d in var] for key in common_keys}

合并成一行代码(可选)

如果追求代码紧凑,也可以把两步合并为一行:

var = {key: [d[key] for d in var] for key in set(var[0]).intersection(*var[1:])}

以上代码的核心逻辑是:对每个共有键,遍历原列表中的每一个字典,收集该键对应的所有值组成列表,最终将键与对应列表组合成新字典,赋值给原变量var。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 13:08:27