Ответ 1
Ваша проблема заключается в том, что вы создаете dict
, чтобы дать исходные данные OrderedDict
- этот dict
не хранит никакого порядка, поэтому порядок утерян до того, как он попадет в OrderedDict
.
Решение состоит в том, чтобы строить из упорядоченного типа данных - самым простым из них является list
of tuple
s:
>>> from collections import OrderedDict
>>> od = OrderedDict([((0, 0), [2]), ((0, 1), [1, 9]), ((0, 2), [1, 5, 9])])
>>> od
OrderedDict([((0, 0), [2]), ((0, 1), [1, 9]), ((0, 2), [1, 5, 9])])
Стоит отметить, что именно поэтому OrderedDict
использует синтаксис, который он делает для него, строковое представление. Строковые представления должны пытаться быть допустимым кодом Python для воспроизведения объекта, где это возможно, и поэтому вывод использует список кортежей вместо диктата.