2015-07-30 2 views
-1

у меня есть длинный список кортежей, как это:Список кортежей в Python сортировать по одному из значений

[(169, 8), (170, 1), (170, 4), (170, 8), (171, 8), (172, 8), (173, 8), (174, 8), (175, 6), (175, 8), (176, 6), (176, 8), (177, 6), (177, 8), (178, 6), (178, 8), (179, 6), (179, 8), (180, 1), (180, 6), (180, 8), (181, 6), (181, 8), (183, 1), (183, 4), (183, 6), (183, 8), (184, 6)..] 

все, что мне нужно, чтобы избавиться от повторений первого значения, выбирая наибольшее второе значение , например:

[(169, 8), (170, 8), (171, 8), (172, 8), (173, 8), (174, 8), (175, 8), (176, 8), (177, 8), (178, 8), (179, 8), (180, 8), (181, 8), (183, 1), (183, 8), (184, 6)..] 

8 не всегда является самым высоким значением в списке.

+0

SO не является сервисом написания кода, если вы хотите получить правильный ответ, вам необходимо обновить свой вопрос с помощью кода, который вы пробовали до сих пор. – Kasramvd

ответ

1

Следующая следует сделать трюк:

l = [(169, 8), (170, 1), (170, 4), (170, 8), (171, 8), (172, 8)] 
print dict(sorted(l)).items() 

Результат:

[(169, 8), (170, 8), (171, 8), (172, 8)] 

Идея состоит в том, чтобы отсортировать первый список, а затем создать словарь, основанный на отсортированных кортежей. Ключ к словарю будет первым элементом. Из-за отсортированного порядка самое высокое второе значение заменит любое другое значение для того же ключа. Затем с items мы преобразуем полученный словарь в кортеж снова.

+0

Огромное спасибо за быстрый ответ и объяснение! :) Это было так просто .. – Ria

Смежные вопросы