Я играл с типом OrderedDict
в Python 3.6 и был удивлен его поведением. Когда я создаю простой dict
, как это в IPython:
d = dict([('sape', 4139), ('guido', 4127), ('jack', 4098)])
Я получаю:
{'guido': 4127, 'jack': 4098, 'sape': 4139}
как результат, который по какой-то причине не сохраняет порядок элементов при создании экземпляра. Теперь, когда я создаю OrderedDict
из d
следующим образом:
od = OrderedDict(d)
вывод:
OrderedDict([('sape', 4139), ('guido', 4127), ('jack', 4098)])
Теперь я спрашиваю себя: как может OrderedDict
-структор узнать о порядке элементов при создании d
? И всегда ли он ведет себя одинаково, так что я могу полагаться на порядок элементов в OrderedDict
?
Я уже читал документы Python о словарях и OrderedDict
, но я не нашел ответа на свой вопрос.
Выход из (sys.version
):
In[22]: sys.version
Out[22]: '3.6.1 (default, Apr 4 2017, 09:40:21) \n[GCC 4.2.1 Compatible Apple LLVM 8.1.0 (clang-802.0.38)]'