Python - сортировать список кортежей в порядке убывания по отношению к элементу кортежа и в порядке возрастания по отношению к другому элементу [duplicate]

Моя проблема началась, когда я попытался изменить сервер из IIS Express на локальный IIS (при использовании LocalDB).

Я использовал LocalDB (для целей dev), и когда я перешел из Local IIS в IIS Express, Visual Studio переключила мой источник данных с Data Source = (LocalDb) \ MSSQLLocalDB на Источник данных =. \ SQLEXPRESS

Неправильная строка соединения

Правильная строка соединения

Надеюсь, что это поможет кому-то.

1
задан Canovice 24 January 2017 в 00:06
поделиться

1 ответ

Вот один из способов сделать это: первая сортировка выполняется в обратном направлении по float, а связи разбиваются путем сортировки по внутреннему кортежу:

srt_lst = sorted(my_list, key=lambda (x, y): (-y, x)) #python 2
print(srt_lst)
# [(('E', 'H', 'F'), 1.0), (('G', 'J', 'I'), 1.0), (('F', 'H', 'G'), 0.8889), (('H', 'I', 'G'), 0.8889), (('I', 'K', 'J'), 0.8889), (('H', 'J', 'I'), 0.875)]

В Python 3 вы будете должны индексировать единственный параметр lambda для доступа к элементам и использовать их для сортировки:

srt_lst = sorted(my_list, key=lambda tup: (-tup[1], tup[0]))
2
ответ дан Moses Koledoye 17 August 2018 в 20:43
поделиться
  • 1
    Примечание: распаковка кортежей в lambda не работает в Python 3; в противном случае штраф. – tobias_k 24 January 2017 в 00:11
  • 2
    @tobias_k Спасибо, что заметили. Их тег Python 3 отсутствовал – Moses Koledoye 24 January 2017 в 00:13
  • 3
    спасибо - используя python 2, и могу подтвердить, что первое решение правильно отсортировано для меня. – Canovice 24 January 2017 в 00:14
  • 4
    FWIW, я бы предложил использовать только вариант python3 (который отлично работает на python2.x). Просто потому, что вариант python2.x работает today , если вы решите перенести свой код на python3 завтра, то это просто еще одна вещь, которую вам придется исправить ... (и нравится это или нет , python3.x - это будущее python). – mgilson 24 January 2017 в 00:16
  • 5
    @Canovice. Вы можете подумать о принятии, если ответ помог – Moses Koledoye 24 January 2017 в 00:54
Другие вопросы по тегам:

Похожие вопросы: