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

如何从list of dict(字典列表)中按同键分组合并对应值为列表

代码实现方案

你可以通过以下两种常用方法实现需求,注意原数据中sub和id均为字符串类型,处理时会同步转换为整型匹配最终输出要求:

方法1:使用collections.defaultdict(推荐,性能更优)

无需提前排序,遍历一次即可完成分组:

from collections import defaultdict

abc = [{'sub':'1','id':'1'},{'sub':'1','id':'2'},{'sub':'2','id':'3'}]

group_container = defaultdict(list)
for item in abc:
    sub_key = int(item["sub"])
    group_container[sub_key].append(int(item["id"]))

# 转换为目标输出格式
output = [{"sub": k, "id": v} for k, v in group_container.items()]
print(output)

运行输出:

[{'sub': 1, 'id': [1, 2]}, {'sub': 2, 'id': [3]}]

方法2:使用itertools.groupby

需要先对分组字段排序,否则同分组的不连续元素会被拆分为多个组:

from itertools import groupby

abc = [{'sub':'1','id':'1'},{'sub':'1','id':'2'},{'sub':'2','id':'3'}]

# 按sub值排序保证同组元素连续
sorted_list = sorted(abc, key=lambda x: int(x["sub"]))
output = []
for sub_key, items in groupby(sorted_list, key=lambda x: int(x["sub"])):
    id_list = [int(i["id"]) for i in items]
    output.append({"sub": sub_key, "id": id_list})

print(output)

运行输出和方法1完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 14:54:03