【Python】1段ネストされたリストや辞書を要素やvalueに基づいてソートする

1段ネストされたリスト(二重リスト)を内包されるリストの任意のインデックス(今回は1番目)に基づいてソートする方法のメモです。

>>> l = [['hoge', 3], ['huga', 1], ['piyo', 4], ['foo', 2]]
>>> sorted(l, key=lambda x: x[1])
[['huga', 1], ['foo', 2], ['hoge', 3], ['piyo', 4]]

内包されるリストが1番目のインデックスに基づいて昇順にソートされています。

同じような書き方で辞書をvalueに基づいてソートできます。

>>> d = {'hoge':3, 'huga':1, 'piyo': 4, 'foo': 2}
>>> sorted(d.items(), key=lambda x: x[1])
[('huga', 1), ('foo', 2), ('hoge', 3), ('piyo', 4)]

lambdaの使い方が独特ですが、戻り値の部分でキーにしたい要素を指定します。
lambdaのありがたみを感じる瞬間ですね。

参考:
ソート HOW TO — Python 3.6.5 ドキュメント

コメント