0

Pythonでリストを使ってメダル集計ランキングのようなことをしようとしています。私は成長し続けるリストを持っています。リスト内の各要素は、4 つの要素を持つリストです。

例えば:L = [[0,1,2,3],[3,0,6,2]]

結果が次のようになるように、このリストの要素をランク付けしようとしています(上記の例の場合):

L = [[3,0,6,2],[0,1,2,3]]つまり、内部リストの最初の要素が金、2 番目が銀などのメダル集計のようなものです。

python でこれを行う簡単な方法はありますか?

4

3 に答える 3

4

組み込みのソート済みを使用できます

sorted(L, reverse=True)

[編集: 上記は、金の総数、次に銀の数などでランク付けされます。これは、金属をランク付けする最も一般的な方法のようです (こちらのメタル集計を参照)。独自の関数を定義し、cmp キーワードを使用して別の方法でランク付けすることもできます。]

于 2012-11-19T22:27:16.140 に答える
1

派手なことをする必要はありません。これは特にビルトインがsorted行うことです。

L = [[0,1,2,3],[3,0,6,2],[3,0,5,2],[3,0,6,3],[11,1,0,0],[3,0,7,1]]
sorted(L,reverse=True)

[[11, 1, 0, 0],
 [3, 0, 7, 1],
 [3, 0, 6, 3],
 [3, 0, 6, 2],
 [3, 0, 5, 2],
 [0, 1, 2, 3]]
于 2012-11-19T22:37:14.447 に答える
0

探しているのが、メダルを最も多く持っている人に基づく降順の並べ替えである場合は、次を使用できます。

L = [[0,1,2,3],[3,0,6,2],[0,0,0,22]]
sorted(L, key=sum, reverse=True)

キーとして指定sumすると、sorted は各要素に対して関数を呼び出してキー値を計算します。

于 2012-11-19T22:31:44.487 に答える