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.