🌟
Pythonでdictのlistを任意の順序にソート
外部APIやDBのレスポンスを好きな順序にソートする方法をうまく見つけられなかったので、
書いてみました。
sort.py
from pprint import pprint
data_list = [
{"id": 1, "name": "aaa"},
{"id": 2, "name": "bbb"},
{"id": 3, "name": "ccc"},
{"id": 4, "name": "ddd"},
{"id": 5, "name": "eee"},
]
id_order = [
1,
5,
3,
2,
4
]
# 検索用にdict化
id_order = {value: index for index, value in enumerate(id_order)}
pprint(data_list)
print("-----")
pprint(sorted(data_list, key=lambda data: id_order[data["id"]]))
結果
[{'id': 1, 'name': 'aaa'},
{'id': 2, 'name': 'bbb'},
{'id': 3, 'name': 'ccc'},
{'id': 4, 'name': 'ddd'},
{'id': 5, 'name': 'eee'}]
-----
[{'id': 1, 'name': 'aaa'},
{'id': 5, 'name': 'eee'},
{'id': 3, 'name': 'ccc'},
{'id': 2, 'name': 'bbb'},
{'id': 4, 'name': 'ddd'}]
Discussion