Как устроен механизм оптимизации словарей Compact Dict, принятый в Python 3.6+? Как разделение словаря на массив хэшей/индексов и массив пар «ключ—значение» сократило потребление памяти и гарантировало сохранение порядка вставки?

Compact Dict хранит разреженную таблицу индексов отдельно от более плотного массива записей. Это уменьшило накладные расходы и позволило обходить элементы в порядке добавления.

Короткий ответ

Что ответить на собеседовании

Compact Dict хранит разреженную таблицу индексов отдельно от более плотного массива записей. Это уменьшило накладные расходы и позволило обходить элементы в порядке добавления.

Подробный разбор

Ответ с пояснениями

Compact Dict хранит разреженную таблицу индексов отдельно от более плотного массива записей. Это уменьшило накладные расходы и позволило обходить элементы в порядке добавления.

Индекс указывает на запись с ключом, значением и необходимой служебной информацией; сами пары не разнесены по всей разреженной таблице. Новые записи добавляются в последовательность, поэтому итерация сохраняет порядок. В CPython 3.6 это было свойством реализации, а с Python 3.7 порядок вставки стал языковой гарантией. Перезапись существующего ключа его не перемещает, удаление с повторным добавлением — перемещает в конец.

Источник: github.com.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее