Back to questions
Junior — Middle
59
Какие требования предъявляются к объекту для его использования в качестве ключа в словаре?
Answer from AI
sobes.tech AI
Для использования объекта в качестве ключа в словаре (dict) в Python он должен быть:
- Хешируемым (hashable): объект должен иметь метод
__hash__(), который возвращает неизменяемое значение. - Неизменяемым: состояние объекта не должно изменяться во время его использования в качестве ключа, иначе хеш может измениться, что нарушит работу словаря.
- Сравнимым: объект должен иметь корректно реализованный метод
__eq__(), чтобы словарь мог сравнивать ключи.
Примеры подходящих ключей: числа, строки, кортежи из неизменяемых элементов.
Пример:
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def __hash__(self):
return hash((self.x, self.y))
def __eq__(self, other):
return isinstance(other, Point) and self.x == other.x and self.y == other.y
p = Point(1, 2)
d = {p: "точка"}
print(d[p]) # Выведет: точка
Если объект изменяемый или не реализует __hash__, использовать его в качестве ключа нельзя.