«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Почему порядок словаря недетерминирован после Python 3.3?

Почему порядок словаря недетерминирован после Python 3.3?

Опубликовано 10 ноября 2024 г.
Просматривать:377

Why Is Dictionary Ordering Non-Deterministic Post-Python 3.3?

Почему порядок словаря в Python 3.3 недетерминирован?

В версиях Python до 3.3 порядок ключей словаря был произвольным, но последовательный. Однако в Python 3.3 этот порядок стал недетерминированным.

Это изменение является результатом исправления безопасности, реализованного в 2012 году и включенного по умолчанию в Python 3.3. Рандомизация хеша, введенная для устранения уязвимостей безопасности, приводит к тому, что порядок итерации словарей и наборов становится непредсказуемым и различается в разных запусках Python.

Чтобы отключить рандомизацию хеша, вы можете установить для переменной среды PYTHONHASHSEED значение 0.

Нелогичный пример

В то время как контрпример в вопросе не всегда дает один и тот же результат в Python 3.3, его ограниченное количество различных упорядочений связано с обработкой хеш-коллизий.

Это ограничение больше не присутствует в Python 3.6 и более поздних версиях, где Порядок вставки словарей сохраняется всегда.

Заявление о выпуске Эта статья перепечатана по адресу: 1729494257. В случае каких-либо нарушений, пожалуйста, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3