Следующий код работал для меня. Это очень наивно и не особенно эффективно. min_key
и max_key
дают вам интервалы для ваших ключей, поэтому вы не всегда начинаете с 0. Для всех индексов в этом диапазоне будет установлено значение по умолчанию None
. Если значение присутствует, ничего не меняется.
Затем элементы в словаре будут отсортированы по значению ключа.
data = [(1, 'Red'), (2, 'Yellow'), (6, 'Pink'), (7, 'Blue'), (8, 'Green')]
data_as_dict = dict(data)
max_key = max(data_as_dict.keys())
min_key = min(data_as_dict.keys())
for i in range(min_key, max_key):
data_as_dict.setdefault(i, None)
data_as_dict = sorted(data_as_dict.items(), key=lambda item: item[0])
print(data_as_dict)
[(1, 'Red'), (2, 'Yellow'), (3, None), (4, None), (5, None), (6, 'Pink'), (7, 'Blue'), (8, 'Green')]
Однако, если вы не Не обращая внимания, начиная с индекса 0, вы можете захотеть взглянуть на использование списка, содержащего только ваши цвета, где первое значение вашего кортежа - это индекс внутри списка, для оптимизации использования памяти.
Надеюсь это помогает!