Во-первых, я заметил, что в сортировке списков кортежей много вопросов, однако, просмотрев несколько сообщений, я не видел ни одного вопроса с этим конкретным форматом для списка. Извиняюсь заранее, что для возможного повторного вопроса, однако я думаю, что это должно быть просто.Python - сортировка списка кортежей на основе нескольких элементов сортировки
Пусть список кортежей быть таким:
my_list = [(('G', 'J', 'I'), 1.0), (('E', 'H', 'F'), 1.0), (('F', 'H', 'G'), 0.8889), (('I', 'K', 'J'), 0.8889), (('H', 'I', 'G'), 0.8889), (('H', 'J', 'I'), 0.875)]
Обратите внимание, что каждый кортеж в списке состоит из 1: другой кортеж длины 3 с 3-х букв и 2: число с плавающей точкой. Моя задача сортировки проста: 1-й сортировать список кортежей по числу с плавающей запятой, 2-й разбить любые связи в числе с плавающей запятой, затем сортировать по первой букве в корте по длине-3, 3-й разбить любые связи в этой букве на сортировка по 2-й букве в корте 3 длины. Желаемый результат будет тогда:
sorted_list = [(('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)]
в данном конкретном примере, сортировка на 2-ом письме разорвать связи на первое письмо не появилось, хотя это не в моем большем наборе данных.
Спасибо!
Итак, вы хотите, чтобы отсортировать в порядке убывания поплавка, и в порядке возрастания букв в кортеже? Попробуйте 'key = lambda t: (-t [1], t [0])' –
Возможный дубликат [Python 3.3 Сортировка списка кортежей с несколькими ключами] (http://stackoverflow.com/questions/23454961/python- 3-3-sorting-a-tuple-list-with-multiple-keys) – Prune