Tuttavia, una chiave di un dizionario di Python deve essere hashable. Un oggetto hashable significa che l'oggetto è immutabile e può produrre un valore di hash unico.
Quindi, l'uso di un oggetto non gradevole come chiave di un dizionario comporterà un errore.
Discutiamo di come possiamo risolvere questo errore.
Esempio di errore
Considera il codice seguente che illustra come si verifica questo tipo di errore.
sviluppatori = "giochi": 200, "database": 100, "full_stack": 500Nell'esempio sopra, iniziamo definendo un dizionario che detiene il tipo di sviluppatore e il numero totale.
Creiamo un dizionario dei dipendenti che prende il dizionario dello sviluppatore come chiave nella seconda parte.
Poiché un dizionario non è dannoso, Python non può usarlo come chiave di un dizionario.
Python Controlla se l'oggetto è hashable
La domanda arriva: come faccio a sapere se un oggetto è hashable o no? In Python, è possibile utilizzare la funzione hash per determinare se un oggetto è hashable.
Un esempio è come mostrato:
>>> hash ("chiave")Se un oggetto è hashable, dovrebbe restituire un hash unico come mostrato nell'esempio sopra. Poiché una stringa è hashable, restituisce un hash unico.
Se si tenta la stessa operazione su un dizionario o un elenco, otterrai un errore come mostrato:
>>> hash ([1,2,3,4,5])Non è hashable poiché un elenco è mutevole, come mostrato nell'errore sopra.
Correzione: TypeEerror: Tipo non povero: 'Dict'
Se vuoi usare un dizionario come chiave per un altro dizionario, puoi farlo convertendolo prima in una tupla.
È un tupla hashable come mostrato nell'esempio seguente:
>>> hash ((1,2,3,4,5))Risolviamo il nostro primo errore convertendo il dizionario dello sviluppatore in una tupla:
>>> sviluppatori = tuple (sviluppatori)Una volta che lo convertiamo in una tupla, possiamo usarlo come chiave nel dizionario come mostrato:
>>> dipendenti = sviluppatori: 800Correzione 2
Un'altra soluzione è usare il dizionario come valore. Ad esempio, possiamo usare il dizionario dello sviluppatore come valore per il dizionario dei dipendenti.
Prendi l'illustrazione del codice di seguito:
>>> sviluppatori = "giochi": 200, "database": 100, "full_stack": 500In questo caso, il codice non restituisce un errore in quanto stiamo usando il dizionario come valore per un nuovo dizionario.
Usando un ciclo per
Un altro metodo non convenzionale è l'utilizzo di un ciclo. Puoi iterare su ogni tasto e valori coppia di un dizionario e aggiungerli a un nuovo dizionario.
Considera l'esempio seguente:
>>> sviluppatori = "giochi": 200, "database": 100, "full_stack": 500In questo caso, utilizziamo un ciclo per iterare gli articoli del dizionario degli sviluppatori e aggiungerli al dettaglio dei dipendenti.
Chiusura
Questo articolo ha esplorato tre metodi per fissare l'errore "TypeEerror: non insalabile:" dict "" in Python.