如何在python中对列表套列表进行排序

如何在python中对列表套列表进行排序

作者:Rhett Bai发布时间:2026-01-14阅读时长:0 分钟阅读次数:6

用户关注问题

Q
Python中如何根据子列表的特定元素排序?

我有一个列表,里面嵌套了多个子列表,想根据子列表中的某个元素来排序,该怎么做?

A

使用sorted函数和lambda表达式实现子列表排序

可以利用sorted函数配合lambda表达式,以子列表中指定索引的元素作为排序关键字。示例代码:

my_list = [[1, 3], [2, 1], [3, 2]]
sorted_list = sorted(my_list, key=lambda x: x[1])
print(sorted_list) # 输出:[[2, 1], [3, 2], [1, 3]]

Q
列表嵌套列表时,如何实现原地排序?

想修改原列表的顺序,而不是生成一个新的排序列表,如何针对嵌套列表实现这一操作?

A

使用列表的sort方法配合key参数进行原地排序

可以调用列表的sort方法,传入一个key参数来指定排序依据,比如:

my_list = [[1, 3], [2, 1], [3, 2]]
my_list.sort(key=lambda x: x[1])
print(my_list) # 输出:[[2, 1], [3, 2], [1, 3]]
这样会改变原列表的顺序。

Q
如何对嵌套列表按照多个元素进行排序?

有一个包含多个子列表的列表,想先根据子列表的第一个元素排序,然后根据第二个元素排序,怎么办?

A

利用key参数传入一个返回多个元素的元组实现多级排序

key参数支持返回元组,可以根据多个子元素进行排序。示例代码:

my_list = [[1, 3], [1, 2], [2, 2], [2, 1]]
my_list.sort(key=lambda x: (x[0], x[1]))
print(my_list) # 输出:[[1, 2], [1, 3], [2, 1], [2, 2]]
这样先按第一个元素排序,相同的再按第二个元素排序。