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

如何在Python中对嵌套列表排序并实现分组映射?

Python 列表排序与索引分组实现

需求说明

给定初始嵌套列表,需完成以下操作:

  • 按子列表的第三个元素排序
  • 重新生成排序后列表的索引
  • 根据指定索引分组,提取对应元素的第二个值

初始数据

original_list = [
    [0, 'A', 50.1],
    [1, 'B', 50.0],
    [2, 'C', 50.2],
    [3, 'D', 50.7],
    [4, 'E', 50.3]
]
group_indices = [[0,1],[1,3],[2,3,4]]

实现步骤

1. 按第三个元素排序

使用sorted()函数,指定key参数为子列表的第三个元素(索引为2):

sorted_list = sorted(original_list, key=lambda x: x[2])
# 输出结果:[[1, 'B', 50.0], [0, 'A', 50.1], [2, 'C', 50.2], [4, 'E', 50.3], [3, 'D', 50.7]]

2. 重新生成索引得到Final列表

遍历排序后的列表,为每个子列表替换成新的递增索引:

final_list = [[i, item[1], item[2]] for i, item in enumerate(sorted_list)]
# 输出结果:[[0, 'B', 50.0], [1, 'A', 50.1], [2, 'C', 50.2], [3, 'E', 50.3], [4, 'D', 50.7]]

3. 根据分组索引提取元素

遍历分组索引列表,从final_list中取出对应索引的子列表的第二个元素:

result = [[final_list[idx][1] for idx in group] for group in group_indices]
# 输出结果:[['B', 'A'], ['A', 'E'], ['C', 'E', 'D']]

完整代码

# 初始数据
original_list = [
    [0, 'A', 50.1],
    [1, 'B', 50.0],
    [2, 'C', 50.2],
    [3, 'D', 50.7],
    [4, 'E', 50.3]
]
group_indices = [[0,1],[1,3],[2,3,4]]

# 按第三个元素排序
sorted_list = sorted(original_list, key=lambda x: x[2])

# 生成Final列表
final_list = [[i, item[1], item[2]] for i, item in enumerate(sorted_list)]

# 生成分组结果
result = [[final_list[idx][1] for idx in group] for group in group_indices]

print("排序后的列表:", sorted_list)
print("Final列表:", final_list)
print("分组结果:", result)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 22:48:52