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

Python如何从多层嵌套列表创建指定结构字典并排序

实现方案

实现逻辑非常直接,分两步完成即可:

  • 遍历原始三层嵌套列表,以每条记录里的类别作为字典键,把(id, 数值)格式的元组追加到对应键的列表中完成数据归集
  • 归集完成后,对每个键对应的列表按数值字段做降序排序,就能得到目标结构的字典

代码实现

可读性最高的写法,用defaultdict省去手动判断键是否存在的逻辑:

from collections import defaultdict

my_list = [[['id_1', 'A', 10], ['id_1', 'C', 3], ['id_1', 'B', 2]],
          [['id_2', 'E', 4], ['id_2', 'A', 3], ['id_2', 'D', 1]],
          [['id_3', 'B', 3], ['id_3', 'C', 1]],
          [['id_4', 'E', 10], ['id_4', 'A', 5], ['id_4', 'B', 4], ['id_4', 'F', 2]]]

result = defaultdict(list)
# 遍历嵌套列表归集数据
for sub_list in my_list:
    for record in sub_list:
        record_id, category, value = record
        result[category].append((record_id, value))

# 按数值降序排序每个分类下的列表
for category in result:
    result[category].sort(key=lambda x: x[1], reverse=True)

# 转为普通字典即可
dictionary = dict(result)

如果不想引入collections模块,用原生字典也能实现,只需要多一步键存在性判断:

result = {}
for sub_list in my_list:
    for record in sub_list:
        record_id, category, value = record
        if category not in result:
            result[category] = []
        result[category].append((record_id, value))

for category in result:
    result[category].sort(key=lambda x: x[1], reverse=True)
dictionary = result

运行上述代码得到的dictionary和你给出的目标结构、排序结果完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 22:54:21