Sobes.tech
Back to questions
Junior — Middle
67

Какие шаги необходимо предпринять для использования объекта в качестве ключа в словаре или хеш-таблице?

Answer from AI

sobes.tech AI

Чтобы использовать объект в качестве ключа в словаре (dict) или хеш-таблице в Python, необходимо, чтобы этот объект был хешируемым. Для этого:

  1. Класс объекта должен реализовывать метод __hash__(), который возвращает целочисленное значение хеша.
  2. Класс должен реализовывать метод __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__ могут быть ключами в словарях.