ねぎとろ放浪記

ねぎとろ放浪記

個人的備忘録です。勉強したことをまとめていきます。

Pythonの多次元リストのソートについて

Pythonの多次元リストをソートする時にいつも忘れるのでメモ。

TL;DR

多次元リストを二次元目の値でソートする方法
key=lambda x:x[1] とします。

l = [[111, "さしすせそ"],
    [222, "あいうえお"],
    [333, "たちつてと"],
    [444, "かきくけこ"]]

sorted_l = sorted(l, key=lambda x:x[1])
print(sorted_l)  

# 実行結果 [[222, 'あいうえお'], [444, 'かきくけこ'], [111, 'さしすせそ'], [333, 'たちつてと']]

2次元目の値でソートできました。

なにをやっているのか

sorted()の2つめの引数に関数を設定することができます。
ソートするときに関数を適用した値をソートします。

上の例ではラムダ式を適用した結果をソートしているのです。


絶対値でソートするときは以下のようにします。

l = [2,-3,4,1]

sorted_l = sorted(l, key=abs)
print(sorted_l)  # [1, 2, -3, 4]

絶対値の昇順でソートできました。

なお、返ってくるリストには 関数適用前の値 が入ります。
この例であれば、-3が入っていることがわかります。

ついでに

降順にソートするときは reverse=True とします。

l = [2,-3,4,1]

sorted_l = sorted(l, key=abs, reverse=True)
print(sorted_l)  # [4, -3, 2, 1]