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

如何用Pandas/Numpy高效实现字典列表的ID-报告值分组聚合?

解决方案

方法一:Python原生高效实现(无需第三方库)

用collections.defaultdict就能简洁搞定,逻辑清晰且效率拉满,200个字典完全不在话下:

from collections import defaultdict

# 你的原始数据列表
data = [
    {"ID001": "Report-1", "ID002": "Report-1", "ID003": "Report-1"},
    {"ID001": "Report-2", "ID005": "Report-5"},
    # 更多字典...
]

result = defaultdict(list)
for d in data:
    for id_, report in d.items():
        result[id_].append(report)

# 可选:转成普通字典
result = dict(result)

这个实现只有两层循环,但逻辑简单直接,Python内置的defaultdict已经做了底层优化,处理200个字典毫无压力。

方法二:Pandas实现(代码更简洁)

如果习惯用Pandas,这种结构化数据处理简直是强项,步骤清晰代码更短:

import pandas as pd

data = [
    {"ID001": "Report-1", "ID002": "Report-1", "ID003": "Report-1"},
    {"ID001": "Report-2", "ID005": "Report-5"},
    # 更多字典...
]

# 转成DataFrame,缺失值自动填充NaN
df = pd.DataFrame(data)
# 堆叠成(ID, Report)的长格式,过滤空值
stacked = df.stack().reset_index()
# 按ID分组,把关联的报告聚合为列表后转字典
result = stacked.groupby(level=1)[0].apply(list).to_dict()

如果不同字典里的ID差异较大,Pandas的stack操作会自动处理缺失值,后续如果还要对数据做分析,扩展性也更强。

两种方法对比

  • 原生方法:不用装第三方库,执行速度略快(200个字典的规模几乎没差别),适合轻量场景。
  • Pandas方法:代码更简洁,后续要做复杂数据处理时衔接更顺畅。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 05:42:43