Почему порядок словаря в Python 3.3 недетерминирован?
В версиях Python до 3.3 порядок ключей словаря был произвольным, но последовательный. Однако в Python 3.3 этот порядок стал недетерминированным.
Это изменение является результатом исправления безопасности, реализованного в 2012 году и включенного по умолчанию в Python 3.3. Рандомизация хеша, введенная для устранения уязвимостей безопасности, приводит к тому, что порядок итерации словарей и наборов становится непредсказуемым и различается в разных запусках Python.
Чтобы отключить рандомизацию хеша, вы можете установить для переменной среды PYTHONHASHSEED значение 0.
Нелогичный пример
В то время как контрпример в вопросе не всегда дает один и тот же результат в Python 3.3, его ограниченное количество различных упорядочений связано с обработкой хеш-коллизий.
Это ограничение больше не присутствует в Python 3.6 и более поздних версиях, где Порядок вставки словарей сохраняется всегда.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3