web-dev-qa-db-ja.com

タプルの並べ替えPython

Blenderにタプルのリストがあるpythonコード

_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)
_

しかし、これは機能していません。なぜか分かりません。任意のヒント?

Scorenameフィールドを持つ新しいscoreクラスを作成するのが、おそらくより良い実装だと私は考えました。

編集:

早い返事をありがとう

sortedメソッドでエラーは発生しませんでしたが、並べ替えは行われませんでした。私はsort()を使用しましたが、機能します。

pythonは、Blenderで少し奇妙だと思いますか?

ありがとう!

19
Sean

ただやる:

_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)を使用できます。また、タプルのリストの場合はデフォルトで、最初のアイテム、2番目のアイテムで並べ替えます。

31
mouad

sorted()は、ソートされたシーケンスを返します。リストをその場で並べ替える場合は、list.sort()を使用します。

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