2

1 つのリスト内に何千ものリストがあります。

何千ものリストのそれぞれに [名前、性別、年齢] が含まれており、名前と性別は str で、年齢は int です。

すべてのリストを年齢順に並べ替えたいのですが、降順です。

これについてどうすればいいですか?

4

2 に答える 2

6

list.sortリストをソートするときに、リスト内のすべてのアイテムに本質的に使用されるキーを指定できます。そのキーは、アイテムを引数として取る関数です。デフォルトでは ID であるため、常に元のオブジェクトが返されますが、別の関数を指定することで簡単に変更できます。

あなたの場合、内部リストの 3 番目の項目を返す必要があります。

biglist.sort(key=lambda x: x[2])

年齢が一意でない場合、これは適切な順序付けを指定しないことに注意してください (通常はそうではありません)。そのため、たとえば次の名前を使用して、2 番目の順序を指定することができます。

biglist.sort(key=lambda x: (x[2], x[0]))

降順を取得するにreverse=Trueは、sort-call でさらに設定する必要があります。

biglist.sort(key=lambda x: (x[2], x[0]), reverse=True)

これを行うと名前の順序にも影響するため、年齢名前が降順になることに注意してください。それを望まない場合は、リストを 2 回並べ替えることができます (別々に。最初に名前、次に年齢の降順)。非常に安全であるため、昇順1000-age並べ替えて、 で降順で並べ替えることができageます。

biglist.sort(key=lambda x: (1000 - x[2], x[0]))
于 2013-10-10T17:03:39.600 に答える