19

次のように、ユーザーとスコアを含むリストのリストがあります。

[["user1", 100], ["user2", 234], ["user3", 131]...]

ユーザーをスコア順に並べ替えたリストを作成したいと思います。

[["user2", 234], ["user3", 131], ["user1", 100]...]

この種のことを行うにはどうすればよいですか?

4

4 に答える 4

23
>>> li = [["user1", 100], ["user2", 234], ["user3", 131]]
>>> 
>>> import operator
>>> 
>>> sorted(li, key=operator.itemgetter(1))   # Ascending order
[['user1', 100], ['user3', 131], ['user2', 234]]

>>> sorted(li, key=operator.itemgetter(1), reverse=True)  # Reverse Sort
[['user2', 234], ['user3', 131], ['user1', 100]]
于 2013-08-09T07:39:18.037 に答える
12

キーを渡して逆にすることで、並べ替えの動作をカスタマイズできます。sorted新しいリストを返します。インプレース ソートが必要な場合は、 を使用しますlist.sort

>>> a = [["user1", 100], ["user2", 234], ["user3", 131]]
>>> sorted(a, key=lambda x: x[1], reverse=True)
[['user2', 234], ['user3', 131], ['user1', 100]]
于 2013-08-09T07:39:50.587 に答える
7

sortedkeyは、オプションの関数と逆パラメーターを受け入れます。

>>> sorted([["user1", 100], ["user2", 234], ["user3", 131]], key=lambda x: x[1], reverse=True)
[['user2', 234], ['user3', 131], ['user1', 100]]
于 2013-08-09T07:39:04.137 に答える
6
l = [["user1", 100], ["user2", 234], ["user3", 131]]
l.sort(lambda x, y: x[1])
于 2013-08-09T07:39:13.610 に答える