python で辞書のキーを指定して並び替える
python で辞書のキーを指定して並び替える
今後も使うことがあると思うので書き残しておこうと思います。
コード
コードは下記の通りです。
import pprint
def sort_dicts_by_key(dicts, keys, reverse=False):
"""
第一引数に並び替え対象の配列を指定する。
第二引数に並び替える属性名が入った配列を指定する。
第三引数に昇順か降順を指定する。
"""
dicts.sort(key=lambda x: ([x[key] for key in keys]), reverse=reverse)
return dicts
# 配列を用意する。
datetime_list = [
{'year': 2000, 'month': 16, 'date': 3},
{'year': 2000, 'month': 12, 'date': 3},
{'year': 2001, 'month': 16, 'date': 2},
{'year': 2022, 'month': 12, 'date': 1},
]
# 並び替えの優先順位を date, month, year で指定する。
keys = ['date', 'month', 'year']
# 実行する。
datetime_list = sort_dicts_by_key(datetime_list, keys)
# 結果を出力する
pprint.pprint(datetime_list)
# [{'date': 1, 'month': 12, 'year': 2022},
# {'date': 2, 'month': 16, 'year': 2001},
# {'date': 3, 'month': 12, 'year': 2000},
# {'date': 3, 'month': 16, 'year': 2000}]
ディスカッション
コメント一覧
まだ、コメントがありません