Сортировать кортежи Python - PullRequest
19 голосов
/ 16 июня 2011

У меня есть список кортежей в моем коде Python Blender

scores=[(1489,"Sean"), (2850,"Bob"), (276,"Crap Player"), (78495, "Great Player"), (8473, "Damian"), (4860, "Andy"), (0, "Stephen")]

Я пытаюсь отсортировать их по их количеству, используя это

sorted(scores, key=lambda score: score[0], reverse=True)

, но это не работает,Понятия не имею почему.Любые советы?

Я рассмотрел, может быть, лучшая реализация - создать новый класс Score с полями name и score

РЕДАКТИРОВАТЬ:

Спасибо, ребята, за быстрый ответ

он не дал мне ошибок при использовании метода sorted, но не сортировал.Я использовал sort(), и он работает.

Я думаю, что Python немного странен в Blender, может быть?

Спасибо!

Ответы [ 3 ]

31 голосов
/ 16 июня 2011

Просто сделай:

print sorted(scores, reverse=True)
[(78495, 'Great Player'), (8473, 'Damian'), (4860, 'Andy'), (2850, 'Bob'), (1489, 'Sean'), (276, 'Crap Player'), (0, 'Stephen')]

вы можете использовать scores.sort(reverse=True), если хотите отсортировать по месту, и, кстати, функцию сортировки в случае списка кортежей по умолчанию сортировать по первому элементу, второму элементу.

10 голосов
/ 16 июня 2011

sorted() возвращает отсортированную последовательность. Если вы хотите отсортировать список по месту, используйте list.sort().

0 голосов
/ 02 декабря 2013
scores.sort(reverse=True)
>>> print scores
[(78495, 'Great Player'), (8473, 'Damian'), (4860, 'Andy'), (2850, 'Bob'), (1489, 'Sean'), (276, 'Crap Player'), (0, 'Stephen')]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...