Как отсортировать словарь по последовательности из списка?
Есть условный словарь:
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])))