为什么我不能对这个列表排序?

3 投票
8 回答
3173 浏览
提问于 2025-04-15 16:30
statlist = [('abc',5,1), ('bzs',66,1), ... ]
sorted(statlist, key=lambda x: int(x[1]))

我想把它按整数从大到小排序。在这个例子中,就是5和66。但好像没有成功。

8 个回答

3

要进行原地排序,可以使用

statlist.sort(key=lambda x: x[1])

如果你想创建一个新的列表,并且这个列表是经过排序的数据,可以使用

otherlist = sorted( statlist, key=lambda x: x[1] )
7

使用 .sort 方法可以直接对列表进行排序:

statlist = [('abc',5,1), ('bzs',66,1), ... ]
statlist.sort(key=lambda x: int(x[1]))

如果你想用 sorted,那么需要重新给变量赋值:

statlist = [('abc',5,1), ('bzs',66,1), ... ]
statlist = sorted(statlist, key=lambda x: int(x[1]))

如果要进行降序排序,可以使用 reverse

statlist = [('abc',5,1), ('bzs',66,1), ... ]
statlist = sorted(statlist, key=lambda x: int(x[1]), reverse=True)

然后,最好用 itemgetter,而不是 lambda

import operator
statlist = [('abc',5,1), ('bzs',66,1), ... ]
statlist = sorted(statlist, key=operator.itemgetter(1), reverse=True)
7

sorted 函数会返回一个 新的 列表,所以你需要像这样把函数的结果赋值给一个变量:

new_list = sorted(statlist, key=lambda x: int(x[1])) 

撰写回答