Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

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

Почему True и 1 считаются одинаковыми ключами в словаре?

Проверяет понимание механизма хеширования и сравнения ключей в словарях Python.

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

В Python словари используют хеш-таблицы. Ключи сравниваются не только по значению, но и по хешу и равенству. True и 1 имеют одинаковый хеш (1) и считаются равными (True == 1), поэтому они воспринимаются как один и тот же ключ. Это особенность, связанная с тем, что bool является подклассом int.

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

Почему True и 1 считаются одинаковыми ключами в словаре?

В Python словари реализованы на основе хеш-таблиц. Когда вы добавляете ключ, Python вычисляет его хеш с помощью функции hash(), а затем использует этот хеш для определения места хранения. При поиске ключа Python сначала сравнивает хеши, а затем проверяет равенство объектов через оператор ==.

Ключевой момент: True и 1 имеют одинаковый хеш, так как hash(True) возвращает 1, и hash(1) тоже возвращает 1. Кроме того, True == 1 возвращает True, потому что bool является подклассом int в Python. Это означает, что они считаются равными при сравнении.

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

Пример кода

d = {}
d[True] = "boolean"
d[1] = "integer"
print(d)  # Вывод: {True: 'integer'}
# Ключ True был перезаписан ключом 1, так как они считаются одинаковыми

# Проверка хеша и равенства
print(hash(True))  # 1
print(hash(1))     # 1
print(True == 1)   # True

Вывод

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

  • Аватар

    Python Guru

    Sergey Filichkin

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

Уровень

  • Рейтинг:

    3

  • Сложность:

    3

Навыки

  • Python

    Python

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

#dictionary

#hash

#equality

#Python

#key

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

  • Аватар

    Python Guru

    Sergey Filichkin

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