Раздел 45 · Python backend: Тарбадель

Хеш-таблицы: как устроены dict и set

middle~30 мин

без входаВойди, чтобы отмечать прогресс, вести заметки и решать задачи в редакторе. войти

Вдоль дальней стены Арены тянутся железные шкафчики, восемь штук, с номерами от 0 до 7. Узор облетает их уже третий раз и что-то бормочет. Ты кладёшь куртку в шкафчик, Каладен ставит галочку в журнале.

Каладен показывает на шкафчики. Номер шкафчика он не ищет: он вычисляет его из номера билета, остаток от деления на восемь. Билет 17 идёт в шкафчик 1, билет 4 в шкафчик 4. Чтобы найти куртку по билету, не надо открывать все шкафчики подряд: тот же расчёт сразу говорит, какой открыть.

Это и есть ответ Узору. dict не ищет ключ, он вычисляет, где ключ должен лежать. Сегодня ты разберёшь, как это работает: что такое хеш, что делать, когда двум ключам выпал один шкафчик, почему таблица держит треть мест пустыми и как устроены dict и set внутри CPython.

урок из курса

Урок из курса «Python backend: Тарбадель». Курс покупается один раз и остаётся навсегда: 500 ₽.

Оплата пока не подключена: премиум и курсы открываются промокодом.