Python言語のリスト(list)の要素を並び替える場合は、
sort() メソッドや組込み関数 sorted() で簡単に書くことが出来ます。
辞書(dict)の要素の並び替えでは、lambda 式を使うのですが、
スグに忘れてしまうので備忘録としてココにまとめます。
リストのソート:sort() と sorted()
元のリストを直接並び替える sort() メソッド
リストの sort() メソッドは、元のリストを直接編集してソートします。
sort() メソッドは「昇順」がデフォルトで、「降順」にする場合は reverse=True のオプションを付けます。
1 2 3 4 5 6 7 8 |
lst = [3, 11, 7, 2] lst.sort() print(lst) # [2, 3, 7, 11] lst.sort(reverse=True) print(lst) # [11, 7, 3, 2] |
新たなリストを生成して返す sorted() 組込み関数
Python の組込み関数 sorted() は、並び替えた新たなリストを返します。
sort() と同様に、降順にしたい時は reverse=True のオプションを付けます。
1 2 3 4 5 6 7 8 9 |
lst_o = [3, 10, 8, 2] lst_s = sorted(lst_o) print(lst_o) # [3, 10, 8, 2] print(lst_s) # [2, 3, 8, 10] lst_r = sorted(lst_o, reverse=True) print(lst_r) # [10, 8, 3, 2] |
辞書(dict)のソート:sorted() と lambda 式
Python の辞書(dict)には、sort() メソッドはありません。
組込み関数 sorted() を使って、要素の並び替えをします。
辞書(dict)のキー key で並び替える
Python の組込み関数 sorted() に辞書(dict)型を与えると、キー key でソートされます。
1 2 3 4 5 6 7 8 |
dic_o = {'python': 3, 'dict': 12, 'sort': 8} dic_s = sorted(dic_o.items()) print(dic_s) # [('dict', 12), ('python', 3), ('sort', 8)] dic_r = sorted(dic_o.items(), reverse=True) print(dic_r) # [('sort', 8), ('python', 3), ('dict', 12)] |
辞書(dict)の値 value で並び替える
ソートに使用するキーを lambda で指定することで、値 value で並び替えることが出来ます。
1 2 3 4 5 6 7 8 |
dic_o = {'python': 3, 'dict': 13, 'sort': 8} dic_v = sorted(dic_o.items(), key=lambda x: x[1]) print(dic_v) # [('python', 3), ('sort', 8), ('dict', 13)] dic_r = sorted(dic_o.items(), key=lambda x: x[1], reverse=True) print(dic_r) # [('dict', 13), ('sort', 8), ('python', 3)] |

辞書(dict)のリストをソート:sorted() と lambda 式
lambda 式の戻り値を、並び替えたいキー key を指定することでソートできます。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
ver_lst = [ {'python': 3, 'dict': 5}, {'python': 1, 'dict': 7}, {'python': 2, 'dict': 1} ] ver_lst_sorted = sorted(ver_lst, key=lambda x: x['python']) print(ver_lst_sorted) # [{'python': 1, 'dict': 7}, # {'python': 2, 'dict': 1}, # {'python': 3, 'dict': 5}] |