Как отсортировать список кортежей по 2 условиям с приоритетом этих 2 условий в python - PullRequest
0 голосов
/ 09 мая 2020

Мне нужно отсортировать что-то вроде

list = [('B', 2), ('A', 6), ('D', 4), ('E', 6), ('C', 2)]

в:

sorted_list = [('A', 6), ('E', 6), ('D', 4) , ('B', 2), ('C', 2)]

Таким образом, он сначала сортируется из кортежа с наибольшим номером, затем, если числа равны, сортируются кортежи в алфавитном порядке по букве в первом элементе.

Таким образом, приоритет от самого высокого к самому низкому с точки зрения чисел в каждом кортеже, а затем по алфавиту, если 2 или более значений равны.

Ответы [ 2 ]

0 голосов
/ 09 мая 2020
a = [('B', 2), ('A', 6), ('D', 4), ('E', 6), ('C', 2)]
print sorted(a, key=lambda tup: tup[1], reverse=True)

напечатает [('A', 6), ('E', 6), ('D', 4), ('B', 2), ('C', 2)]

0 голосов
/ 09 мая 2020

Вы можете сделать это так:

sorted([('B', 2), ('A', 6), ('D', 4), ('E', 6), ('C', 2)], key = lambda x: (-x[1],x[0]))

дает:

[('A', 6), ('E', 6), ('D', 4), ('B', 2), ('C', 2)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...