Как отсортировать словарь по последовательности из списка?

Есть условный словарь:

inp = {'A': 0, 'C': 1, 'B': 2}

Список в определенной последовательности:

sorted_list = ['A', 'B', 'C']

На выход хочу получить словарь, отсортированный по sorted_list:

out = {'A': 0, 'B': 2, 'C': 1}

Вопрос. Как?


Ответы (1 шт):

Автор решения: n1tr0xs

Как уже сказали в комментариях:

Словарь - это неупорядоченная структура.

Но если вам нужно лишь вывести в таком порядке, то можно так:

inp = {'A': 0, 'C': 1, 'B': 2}
sorted_list = ['A', 'B', 'C']

for key in sorted_list:
    print(f'{key}: {inp.get(key)}')

Вот так можно "преобразовать" словарь в список кортежей:

inp = {'A': 0, 'C': 1, 'B': 2}
sorted_list = ['A', 'B', 'C']

inp_list = [(key, inp.get(key)) for key in sorted_list]

Можно использовать collections.OrderedDict:

from collections import OrderedDict
inp = {'A': 0, 'C': 1, 'B': 2}
sorted_list = ['A', 'B', 'C']

ord_dict = OrderedDict()
for key in sorted_list:
    ord_dict[key] = inp.get(key)

Поджатый метод с использованием collections.OrderedDict:

from collections import OrderedDict
inp = {'A': 0, 'C': 1, 'B': 2}
sorted_list = ['A', 'B', 'C']
ord_dict = OrderedDict(sorted(inp.items(), key=lambda x: sorted_list.index(x[0])))
→ Ссылка