Sobes.tech
Junior — Middle

¿Qué pasos se deben seguir para que una instancia de una clase propia pueda usarse como clave en un diccionario de Python?

sobes.tech AI

Respuesta de la IA

Para que una instancia de una clase propia pueda ser utilizada como clave en un diccionario de Python, debe ser hashable y comparable. Para ello, es necesario implementar los métodos __hash__() y __eq__() en la clase. El método __hash__ debe devolver un valor entero único para el objeto, considerando sus atributos significativos, y __eq__ debe definir la igualdad entre objetos.

Ejemplo:

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])  # Mostrará 'valor', ya que key1 == key2

Es importante que los objetos sean inmutables respecto a los atributos utilizados en el hash, de lo contrario, el diccionario puede funcionar incorrectamente.