1 つのリスト内に何千ものリストがあります。
何千ものリストのそれぞれに [名前、性別、年齢] が含まれており、名前と性別は str で、年齢は int です。
すべてのリストを年齢順に並べ替えたいのですが、降順です。
これについてどうすればいいですか?
1 つのリスト内に何千ものリストがあります。
何千ものリストのそれぞれに [名前、性別、年齢] が含まれており、名前と性別は str で、年齢は int です。
すべてのリストを年齢順に並べ替えたいのですが、降順です。
これについてどうすればいいですか?
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]))