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