はじめに
辞書のリストは JSON を読み込むと発生することがしばしばありますが、取り扱いについて毎回調べているので、自分用になりますがまとめておこうかなと思います。
辞書のリストとは
辞書(dict)のリスト(list)とは以下のような形式のものです。
dict_list = [
{ 'id': 542, 'name': 'Suzuki', 'gender': 1, 'age': 91 },
{ 'id': 231, 'name': 'Saitou', 'gender': 0, 'age': 54 },
{ 'id': 490, 'name': 'Tanaka', 'gender': 2, 'age': 31 }
]
文字で書くと、、__リスト(list)の要素が 辞書(dict)になっている形式__のことです。
辞書のリストのソート
要素である辞書の特定のキーでソートする方法です。
昇順
sorted_dict_list = sorted(dict_list, key=lambda x: x['id'])
# sorted_dict_list = [
# { 'id': 231, 'name': 'Saitou', 'gender': 0, 'age': 54 },
# { 'id': 490, 'name': 'Tanaka', 'gender': 2, 'age': 31 },
# { 'id': 542, 'name': 'Suzuki', 'gender': 1, 'age': 91 }
# ]
降順
reverse_dict_list = sorted(dict_list, key=lambda x: x['id'], reverse=True)
# reverse_dict_list = [
# { 'id': 542, 'name': 'Suzuki', 'gender': 1, 'age': 91 },
# { 'id': 490, 'name': 'Tanaka', 'gender': 2, 'age': 31 },
# { 'id': 231, 'name': 'Saitou', 'gender': 0, 'age': 54 }
# ]
ソート後結果の抽出
dict_list_name = [d.get('name') for d in sorted_dict_list]
# dict_list_name = [ 'Saitou', 'Tanaka', 'Suzuki' ]
辞書のリストの最大・最小
要素である辞書の特定のキーの最大値・最小値を抽出する方法です。
最大
max_dict_list = max(dict_list, key=lambda x: x['age'])
# max_dict_list = {'id': 542, 'name': 'Suzuki', 'gender': 1, 'age': 91}
最小
min_dict_list = min(dict_list, key=lambda x: x['age'])
# min_dict_list = { 'id': 490, 'name': 'Tanaka', 'gender': 2, 'age': 31 }
参考
- Pythonで辞書のリストを特定のキーの値に従ってソート
- Pythonで辞書のリストから特定のキーの値のリストを取得