Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Python: hash, collision, dictionary

Как работают коллизии в словарях и хэш-таблицах?

Вопрос проверяет понимание механизмов разрешения коллизий в хэш-таблицах Python.

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

Коллизии возникают, когда разные ключи имеют одинаковый хэш. Python использует открытую адресацию для разрешения коллизий — при конфликте ищется следующая свободная ячейка в таблице. Это обеспечивает эффективный поиск даже при коллизиях.

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

Хэш-таблицы в Python используют алгоритм открытой адресации для разрешения коллизий, когда несколько ключей претендуют на одну ячейку.

Механизм разрешения коллизий:

  • При коллизии вычисляется следующая ячейка с помощью пробинга

  • Используется формула: perturb = perturb >> 5; j = (5*j) + 1 + perturb

  • Процесс повторяется до нахождения свободной ячейки

Пример коллизии:

# Два разных объекта с одинаковым хэшом
class CustomKey:
    def __init__(self, hash_value):
        self.hash_value = hash_value
    
    def __hash__(self):
        return self.hash_value
    
    def __eq__(self, other):
        return isinstance(other, CustomKey)

key1 = CustomKey(42)
key2 = CustomKey(42)  # Тот же хэш

d = {}
d[key1] = "value1"
d[key2] = "value2"  # Коллизия - будет найдена другая ячейка

Последствия коллизий:

  • Увеличивается время поиска (в худшем случае O(n))

  • Увеличивается использование памяти

  • Снижается производительность при большом количестве коллизий

  • Аватар

    Python Guru

    Sergey Filichkin

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

Уровень

  • Рейтинг:

    2

  • Сложность:

    7

Навыки

  • Python

    Python

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

#hash

#collision

#dictionary

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

  • Аватар

    Python Guru

    Sergey Filichkin

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