Tipo non pollice dict '

Tipo non pollice dict '
A Python, un dizionario si riferisce a una raccolta non ordinata di coppie di valore chiave. Ogni chiave è mappata su un valore specifico all'interno del dizionario. La chiave di un dizionario è unica e viene utilizzata per accedere al valore corrispondente.

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": 500
>>> dipendenti = sviluppatori: 800
Traceback (chiamata più recente per ultima):
File "", riga 1, in
TAYEERROR: Tipo non dannoso: 'DICT'

Nell'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")
-4481039435095198476

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])
Traceback (chiamata più recente per ultima):
File "", riga 1, In
TAYEERROR: tipo non povero: 'Elenco'

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))
-5659871693760987716

Risolviamo il nostro primo errore convertendo il dizionario dello sviluppatore in una tupla:

>>> sviluppatori = tuple (sviluppatori)
>>> stampa (sviluppatori)
("Games", "Database", "full_stack")

Una volta che lo convertiamo in una tupla, possiamo usarlo come chiave nel dizionario come mostrato:

>>> dipendenti = sviluppatori: 800
>>> stampa (dipendenti)
('Games', 'Database', 'full_stack'): 800

Correzione 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": 500
>>> dipendenti = "dipendenti": sviluppatori
>>> stampa (dipendenti)
'Employees': 'Games': 200, 'database': 100, 'full_stack': 500

In 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": 500
>>> Per K, V negli sviluppatori.elementi():
... dipendenti [k] = v
..
>>> dipendenti
'Employees': 'Games': 200, 'Database': 100, 'full_stack': 500, 'Games': 200, 'database': 100, 'full_stack': 500

In 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.