Разрыв связей в сортировке Python

У меня есть list tuple s, каждый кортеж содержит два целых числа. Мне нужно отсортировать список (в обратном порядке) в соответствии с разницей целых чисел в каждом кортеже, но разрыв связей с большим первым целым числом.

пример

Для [(5, 6), (4, 1), (6, 7)] следует получить [(4, 1), (6, 7), (5, 6)] .

Мой путь

Я уже решил это, сделав dictionary который содержит разницу в качестве key и кортежа как value . Но все это немного неуклюже.

Что лучше?

One Solution collect form web for “Разрыв связей в сортировке Python”

Используйте key функцию для sorted() и возврата кортежа; значения будут отсортированы лексикографически:

 sorted(yourlst, key=lambda t: (abs(t[0] - t[1])), t[0]), reverse=True) 

Я использую abs() здесь, чтобы вычислить разницу, независимо от того, какой из двух целых чисел больше.

Для ввода образца введите ключ (1, 5) , (3, 4) и (1, 6) ; в обратном порядке, что ставит (1, 6) (для (6, 7) кортежей) до (1, 5) (что соответствует (5, 6) ).

Демо-версия:

 >>> yourlst = [(5, 6), (4, 1), (6, 7)] >>> sorted(yourlst, key=lambda t: (abs(t[0] - t[1]), t[0]), reverse=True) [(4, 1), (6, 7), (5, 6)] 
  • python, конвертировать словарь в отсортированный список по значению вместо ключа
  • Поиск N-го элемента несортированного списка без сортировки списка
  • Сортировка массивов в NumPy по столбцам
  • отменить или отменить argsort (), python
  • Python Сортировка последних персонажей
  • Сортировка Python в отсортированном списке
  • Сопоставление отсортированного по строкам данных с исходными метками столбцов (Pandas)
  • Сортировка списка на основе значений из другого списка?
  • Быстрая сортировка многомерного массива
  • Какой алгоритм использует сортировка () python?
  • Учитывая список словарей, как я могу устранить дубликаты одного ключа и сортировать по другому
  • Python - лучший язык программирования в мире.