Словари упорядочены в Python 3.6 (по крайней мере, при реализации CPython), в отличие от предыдущих воплощений. Это похоже на существенное изменение, но это лишь короткий абзац в документации. Он описывается как деталь реализации CPython, а не язык, но также подразумевает, что это может стать стандартом в будущем.
Как новая реализация словаря работает лучше старой, сохраняя порядок элементов?
Вот текст из документации:
dict()
теперь использует "компактное" представление впервые предложенное PyPy. Использование памяти dict() на 20% и 25% меньше по сравнению с Python 3.5. PEP 468 (Сохранение порядка ** kwargs в функции.) реализуется этим. Аспект сохранения порядка этой новой реализации рассматривается как деталь реализации и не следует полагаться (это может измениться в будущем, но желательно, чтобы эта новая реализация dict на языке для нескольких выпусков перед изменением спецификации языка для мандатной семантики сохранения порядка для всех текущих и будущих реализаций Python, что также помогает сохранить обратную совместимость со старыми версиями языка, на котором по-прежнему действует случайный порядок итераций, например Python 3.5). (Внесенный INADA Naoki в выпуск 27350 Идея изначально предложенная Раймондом Хеттингером.)
Обновление в декабре 2017 года: dict
сохранение порядка вставки гарантировано для Python 3.7