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

Python中如何按id对嵌套字典列表排序?已试sorted函数未达预期

解决嵌套字典列表的多层排序问题

需要实现两层排序:一是每个主字典下的Details列表按其内部Data的最小id升序排列;二是每个Details子项里的Data列表按id字段升序排列。以下是可行的Python实现方案:

代码示例

# 原始嵌套字典列表
data = [
   {
      "Name":"21_12",
      "Details":[
         {
            "name":"Cat",
            "Data":[
               {
                  "status":"Passed",
                  "id":3,
                  "loop_count":1
               },
               {
                  "status":"Passed",
                  "id":5,
                  "loop_count":1
               }
            ]
         },
         {
            "name":"Dog",
            "Data":[
               {
                  "status":"Passed",
                  "id":1,
                  "loop_count":1
               },
               {
                  "status":"Passed",
                  "id":2,
                  "loop_count":1
               }
            ]
         }
      ]
   }
]

# 执行排序逻辑
for main_item in data:
    # 先对每个Details下的Data列表按id升序排序
    for detail in main_item["Details"]:
        detail["Data"] = sorted(detail["Data"], key=lambda x: x["id"])
    # 再对Details列表按其Data中最小的id值升序排序
    main_item["Details"] = sorted(
        main_item["Details"],
        key=lambda d: min(item["id"] for item in d["Data"])
    )

# 格式化输出结果
import json
print(json.dumps(data, indent=3))

代码说明

  1. 内层Data排序:遍历每个Details子项,使用sorted函数对Data列表排序,排序依据为每个元素的id字段。
  2. 外层Details排序:对Details列表排序时,以该子项Data列表中所有元素的最小id作为排序key,确保Data整体id偏小的Details排在前面,匹配预期输出。
  3. 格式化输出:用json.dumps带缩进参数打印,保证输出结构清晰易读。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 05:51:32