Junior — Middle
Quali passaggi sono necessari affinché un'istanza di una propria classe possa essere utilizzata come chiave in un dizionario Python?
sobes.tech AI
Risposta dell'AI
Per consentire a un'istanza di una propria classe di essere usata come chiave in un dizionario Python, deve essere hashabile e confrontabile. A tal fine, è necessario implementare i metodi __hash__() e __eq__() nella classe. Il metodo __hash__ deve restituire un valore intero unico per l'oggetto, considerando i suoi attributi significativi, e __eq__ deve definire l'uguaglianza tra gli oggetti.
Esempio:
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
# Utilizzo
my_dict = {}
key1 = MyKey(1)
key2 = MyKey(1)
my_dict[key1] = 'valore'
print(my_dict[key2]) # Mostrerà 'valore', poiché key1 == key2
È importante che gli oggetti siano immutabili rispetto agli attributi usati nel calcolo dell'hash, altrimenti il dizionario potrebbe funzionare in modo errato.