为什么我不能对这个列表排序?
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]))