python:按子列表中的项目对列表进行排序

fox*_*fox 14 python sorting list

我有一个包含用户和分数的列表列表,如下所示:

[["user1", 100], ["user2", 234], ["user3", 131]...]
Run Code Online (Sandbox Code Playgroud)

我想生成一个列表,按递减顺序按分数对用户进行排序:

[["user2", 234], ["user3", 131], ["user1", 100]...]
Run Code Online (Sandbox Code Playgroud)

我怎么可能这样做呢?

Roh*_*ain 19

>>> li = [["user1", 100], ["user2", 234], ["user3", 131]]
>>> 
>>> import operator
>>> 
>>> sorted(li, key=operator.itemgetter(1))   # Ascending order
[['user1', 100], ['user3', 131], ['user2', 234]]

>>> sorted(li, key=operator.itemgetter(1), reverse=True)  # Reverse Sort
[['user2', 234], ['user3', 131], ['user1', 100]]
Run Code Online (Sandbox Code Playgroud)


zha*_*gyu 10

您可以通过传递密钥并反向来自定义排序行为.sorted将返回一个新列表.如果需要就地排序,请使用list.sort.

>>> a = [["user1", 100], ["user2", 234], ["user3", 131]]
>>> sorted(a, key=lambda x: x[1], reverse=True)
[['user2', 234], ['user3', 131], ['user1', 100]]
Run Code Online (Sandbox Code Playgroud)


fal*_*tru 6

已排序接受可选key功能和反向参数.

>>> sorted([["user1", 100], ["user2", 234], ["user3", 131]], key=lambda x: x[1], reverse=True)
[['user2', 234], ['user3', 131], ['user1', 100]]
Run Code Online (Sandbox Code Playgroud)


Ale*_*.P. 6

l = [["user1", 100], ["user2", 234], ["user3", 131]]
l.sort(lambda x, y: x[1])
Run Code Online (Sandbox Code Playgroud)