[python] 多次元配列のN次元M番目の要素でソートする方法


はじめに

本日のテーマはこちらの問題から学んだこと。

ABC 128  B-Guidebook

配列のソートの応用技について学びました。
初心者の方は「多次元配列(リストの中にリスト)をソートしたらどんな順番になるんだっけ?」って疑問に思いませんでしたか?
今回はそれを解き明かしていきます!

考え方

今回の問題は入力で与えられる「市名」「点数」「順番」を多次元配列で保持します。辞書順で「市名」の若い順、その中でも「点数」の高い順で出力しなければならないので、2次元配列の1番目で昇順、2番目で降順したリストの「順番」を出力すればよいですね。
ポイントはオプション引数keyにラムダ式でソートしたい要素指定を行うこと。
ソートのキーが複数あり、且つ、各々で昇順・降順が異なる場合は下図の例のようにマイナスをつけて反転させるテクニックがあります。覚えておくと使えそうですね。