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))
代码说明
- 内层Data排序:遍历每个
Details子项,使用sorted函数对Data列表排序,排序依据为每个元素的id字段。 - 外层Details排序:对
Details列表排序时,以该子项Data列表中所有元素的最小id作为排序key,确保Data整体id偏小的Details排在前面,匹配预期输出。 - 格式化输出:用
json.dumps带缩进参数打印,保证输出结构清晰易读。
内容的提问来源于stack exchange,提问作者Vinutha Varun
相关产品推荐
相关产品推荐

