Как настроить мою собственную функцию сравнения в Python 3 - PullRequest
0 голосов
/ 01 ноября 2018

Есть ли способ настроить функцию сравнения в Python 3? Например, есть список: [[1, a], [1, b], [2, b], [2, a], [3, a]]. Сначала сортируйте его по целому, от большего к меньшему, затем, если целое число одинаковое, сортируйте по буквам в порядке словаря. Это совершенно два разных порядка, первый перевернут, а второй нет. Поэтому я не могу просто использовать 'reverse = True', чтобы справиться с этим.

Я знаю, что в Python 2 есть cmp, чтобы помочь мне определить мою собственную функцию сравнения. Но как я могу сделать это в Python 3?

Любая помощь будет оценена. Спасибо

1 Ответ

0 голосов
/ 01 ноября 2018

Вы можете использовать функцию ключа, которая возвращает набор элементов, по которым вы хотите отсортировать. Отмените числовые элементы для обратного порядка:

l = [[1, 'a'], [1, 'b'], [2, 'b'], [2, 'a'], [3, 'a']]
print(sorted(l, key=lambda t: (-t[0], t[1])))

Это выводит:

[[3, 'a'], [2, 'a'], [2, 'b'], [1, 'a'], [1, 'b']]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...