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

Python实现将字典列表转换为按category分组的嵌套字典对象

解决方案

错误原因

你之前的实现问题出在dict(zip(k, data))逻辑:zip会按位置将唯一分类键和原数据列表的条目一一配对,每个分类只能绑定1条原数据,自然无法实现同分类多条数据聚合。

实现方案

方案1:原生Python实现(无需额外依赖)

直接遍历原数据列表,以category为键做聚合,同时剔除不需要的category字段:

# 初始化空聚合字典
result_dict = {}
for item in data:
    # 取当前条目的分类
    cate = item["category"]
    # 构造要存入的子项(剔除category字段)
    sub_item = {"form": item["form"], "path": item["path"]}
    # 分类不存在则初始化空列表
    if cate not in result_dict:
        result_dict[cate] = []
    # 追加子项到对应分类列表
    result_dict[cate].append(sub_item)

# 按要求的结构包入列表
final_result = [result_dict]

运行后final_result就是你需要的嵌套结构。

方案2:使用collections.defaultdict简化代码

如果允许导入标准库,可以用defaultdict省略判断键是否存在的步骤:

from collections import defaultdict

result_dict = defaultdict(list)
for item in data:
    result_dict[item["category"]].append({
        "form": item["form"],
        "path": item["path"]
    })

final_result = [dict(result_dict)]

两种方案都可以实现需求,原生实现兼容性更好,defaultdict写法更简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 03:57:04