Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Python: collision, perturbation, rehash, dummy, hashtable

Как Python решает коллизии при хешировании?

Проверяет знание алгоритма обработки одинаковых хешей в dict.

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

При коллизии CPython применяет perturbation‑алгоритм (шаговая арифметика) для вычисления следующей позиции в таблице. Если таблица перегружена, происходит её расширение, и все элементы перехешируются заново. Удалённые слоты помечаются dummy, чтобы не нарушить поиск.

Длинный ответ

Perturbation Algorithm:

perturb >>= PERTURB_SHIFT
index = (5*index + 1 + perturb) & mask

уменьшает кластеризацию линейного пробирования.

  • Dummy‑слоты:
    пометка удалённых позиций, чтобы продолжить поиск других ключей.

  • Resize:
    при загруженности выше ≈66% создаётся новая таблица и перехеширование.

  • Сложность:
    средняя O(1) даже при коллизиях.

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    2

  • Сложность:

    8

Навыки

  • Python

    Python

Ключевые слова

#collision

#perturbation

#rehash

#dummy

#hashtable

Подпишись на Python Developer в телеграм

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.