Back to questions
Junior — Middle
51
Как можно определить, что объект можно безопасно использовать в качестве хэшируемого ключа?
Companies where asked
Магнит Тех
Answer from AI
sobes.tech AI
Объект можно использовать в качестве ключа в словаре или элемента множества, если он является хэшируемым. В Python это означает, что объект должен удовлетворять двум условиям:
- Иметь метод
__hash__(), который возвращает неизменяемое целочисленное значение. - Иметь корректно реализованный метод
__eq__(), чтобы объекты, считающиеся равными, имели одинаковый хэш.
Кроме того, объект должен быть неизменяемым (immutable), так как изменение объекта после использования его в качестве ключа нарушит целостность хэш-таблицы.
Пример:
# Кортеж — хэшируемый тип
key = (1, 2, 3)
d = {key: 'value'}
# Список — не хэшируемый, вызовет ошибку
key = [1, 2, 3]
d = {key: 'value'} # TypeError
Чтобы проверить, можно ли использовать объект как ключ, можно вызвать hash(obj) и убедиться, что не возникает исключения.