如何在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
相关产品推荐
相关产品推荐

