#はじめに
自分が忘れないように書き留めたものです。
n番目の要素に着目してソートするのは知らない人は苦労するかも?と思って記事にしてみました。
ついでにsortedにおける降順ソートのやり方も紹介してます。
#コード
li = [[1,4,3],[2,3,4],[3,4,5],[4,5,6],[2,3,4],[1,5,3],[2,3,4],[5,6,7]]
li = sorted(li, reverse=True, key=lambda x: x[1]) #[1]に注目してソート
print(li)
keyにlambdaを使って関数を渡しているところがポイントです。key関数が示すのはリストの各要素に対して行う前処理です。
上記の例でいえば、[1,4,3]という0番目の要素をkey関数に渡し、仮引数xで受け取ります。その後、x[1]すなわち[1,4,3]の内の4を返す処理を行います。この返ってきた値をソートの基準として用います。
これを全ての要素について行うことで、2番目の要素を用いた並べ替えが実行出来るわけです。
また、reverse = Trueとすることで降順ソートも実現しています。
#実行結果
[[5, 6, 7], [4, 5, 6], [1, 5, 3], [1, 4, 3], [3, 4, 5], [2, 3, 4], [2, 3, 4], [2, 3, 4]]
#結論
結構簡単です。
他にもkey関数でやれることは色々あるので知りたい方はこちらの公式ドキュメントをご覧ください。
凄くわかりやすいと思います。