Python: сортировать список списков по элементу в подсписке

У меня есть список списков, содержащий пользователей и оценки:

[["user1", 100], ["user2", 234], ["user3", 131]...]

Я хочу создать список, сортирующий пользователей по счету в порядке убывания:

[["user2", 234], ["user3", 131], ["user1", 100]...]

Как я могу заниматься этим видом?

Ответ 1

>>> 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]]

Ответ 2

Вы можете настраивать поведение сортировки, передавая ключ и наоборот. 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]]

Ответ 3

sorted принять необязательную функцию key и обратный параметр.

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

Ответ 4

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