Sobes.tech
Junior — Middle

Quais os passos necessários para que uma instância de uma classe própria possa ser usada como chave em um dicionário Python?

sobes.tech IA

Resposta da IA

Para que uma instância de uma classe própria possa ser usada como chave num dicionário Python, ela deve ser hashável e comparável. Para isso, é necessário implementar os métodos __hash__() e __eq__() na classe. O método __hash__ deve retornar um valor inteiro único para o objeto, considerando seus atributos significativos, e __eq__ deve definir a igualdade entre objetos.

Exemplo:

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

# Uso
my_dict = {}
key1 = MyKey(1)
key2 = MyKey(1)
my_dict[key1] = 'valor'
print(my_dict[key2])  # Vai mostrar 'valor', pois key1 == key2

É importante que os objetos sejam imutáveis relativamente aos atributos usados no hash, caso contrário, o dicionário pode funcionar incorretamente.