Sobes.tech
Back to questions
Junior — Middle
72

Каким образом можно использовать собственный объект в качестве ключа в структуре данных, например, в словаре или хэш-таблице?

Answer from AI

sobes.tech AI

В Python для использования собственного объекта в качестве ключа словаря он должен быть хешируемым. Это значит, что класс должен реализовывать методы __hash__() и __eq__() так, чтобы объекты с одинаковыми значениями имели одинаковый хэш и сравнивались как равные.

Пример:

class MyKey:
    def __init__(self, id):
        self.id = id

    def __hash__(self):
        return hash(self.id)

    def __eq__(self, other):
        return isinstance(other, MyKey) and self.id == other.id

# Использование
my_dict = {}
key1 = MyKey(1)
key2 = MyKey(1)
my_dict[key1] = 'value'
print(my_dict[key2])  # Выведет 'value', так как key1 и key2 считаются равными

Без правильной реализации этих методов объекты не смогут корректно использоваться в качестве ключей.