🌟

Pythonでdictのlistを任意の順序にソート

2021/12/27に公開

外部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