Как и другие ответы правильно состояния, Python словари неупорядоченный.
Это говорит, JSON is also supposed to have unordered mappings, поэтому в принципе не имеет смысла хранить заказываемые словари в JSON. Конкретно это означает, что при чтении объекта JSON порядок возвращаемых ключей может быть произвольным. Поэтому
Хороший способ сохранения порядка отображения (например, в Python OrderedDict) в формате JSON, чтобы выводить массив (ключ, значение) пар, которые преобразовываются обратно в упорядоченное отображение при чтении:
>>> from collections import OrderedDict
>>> import json
>>> d = OrderedDict([(1, 10), (2, 20)])
>>> print d[2]
20
>>> json_format = json.dumps(d.items())
>>> print json_format # Order maintained
[[1, 10], [2, 20]]
>>> OrderedDict(json.loads(json_format)) # Reading from JSON: works!
OrderedDict([(1, 10), (2, 20)])
>>> _[2] # This works!
20
(Обратите внимание, как упорядоченный словарь, построенный из списка из (ключ, значение) пар: OrderedDict({1: 10, 2: 20})
не будет работать: его ключи не обязательно заказывается в словаре буквальном, так как буквальное создает словарь Python, чьи ключи неупорядочены.)
Python словари не имеют порядка. –
@Klaus D. И все-таки 'OrderedDict' у него есть (см. Мой [ответ] (http://stackoverflow.com/a/43640347/237105) ниже) –