tipo Python dict

Il linguaggio Python è specifico su cosa può essere usato come chiave in un dizionario. In un dizionario Python, tutte le chiavi devono essere hashable.

Se provi a utilizzare un tipo di chiave unhashable quando aggiungi una chiave a un dizionario, incontrerai il tipo "TypeError: unhashable: ‘dict’" error.

In questa guida, parliamo di cosa significa questo errore e perché viene generato. Esaminiamo un esempio di questo errore in modo che tu possa imparare a risolverlo nel tuo codice.

TypeError: unhashable type: ‘dict’

I dizionari sono composti da due parti: chiavi e valori. Le chiavi sono gli identificatori associati a un valore. Quando fai riferimento a una chiave, sarai in grado di recuperare il valore associato a quella chiave.

Solo gli oggetti hashable possono essere chiavi in ‚Äã‚Äãun dizionario. Oggetti immutabili come stringhe, interi, tuple e frozensets sono hashable, con alcune eccezioni. I dizionari, quindi, non possono essere utilizzati come chiave in un dizionario.

Per aggiungere un elemento a un dizionario, è necessario specificare una chiave hash valida. Ad esempio, "nome" è una chiave valida, ma { "name": "test" } non lo è.

Uno scenario di esempio

Qui scriviamo un programma che aggiunge tutte le torte che sono state vendute più di cinque volte in una panetteria da un dizionario all’altro.

Inizia dichiarando un elenco di torte che contiene dizionari su ciascuna torta. Definiamo anche un dizionario in cui possiamo memorizzare le torte che sono state vendute più di cinque volte.

L’81% dei partecipanti ha dichiarato di sentirsi più sicuro delle proprie prospettive di lavoro nel settore tecnologico dopo aver frequentato un bootcamp. Fatti abbinare a un bootcamp oggi.

Il laureato medio di un bootcamp ha trascorso meno di sei mesi nella transizione di carriera, dall’avvio di un bootcamp alla ricerca del primo lavoro.

Le nostre "torte" elenco contiene tre dizionari. Ogni dizionario contiene due chiavi e valori. I nomi chiave sono "torta" e "venduto".

Ora, scriviamo un for loop che scorre la nostra lista di torte e trova quelle che sono state vendute più di cinque volte. Quelle torte verranno aggiunte al dizionario "sold_more_than_five":

Nel nostro ciclo for, confrontiamo se il valore di "venduto" in ogni dizionario è maggiore di 5. In caso affermativo, quell’elemento viene aggiunto al nostro dizionario "venduto_more_than_five". Quindi, un viene stampato un messaggio sulla console che informa l’utente che la particolare torta è stata venduta più di cinque volte.

Una volta che il nostro ciclo è stato eseguito, stampiamo t ha "venduto_più_di_cinque" dizionario alla console.

Esegui il nostro codice per assicurarti che il nostro programma funzioni:

Il nostro codice restituisce un errore.

La soluzione

Il nostro codice non funziona perché stiamo cercando di creare una chiave di dizionario utilizzando un altro dizionario.

Il valore di "c" è uguale a un dizionario del nostro "torte" elenco. Ciò significa che quando proviamo ad aggiungere un articolo a "sold_more_than_five" dizionario, stiamo accidentalmente cercando di aggiungere un dizionario come chiave:

Quando il nostro "if" viene eseguita sulla "Torta di carote" cake, il nostro codice tenta di eseguire:

Questo non è valido perché stiamo cercando di aggiungere un dizionario come chiave in un dizionario. Possiamo risolvere questo problema usando c["name"] come nome della nostra chiave del dizionario:

Esegui il nostro codice con questo codice rivisto:

Il nostro codice viene eseguito correttamente. Ora stiamo usando il nome di ogni torta come chiave invece che come dizionario.

Conclusione

L’errore "TypeError: unhashable type: ‚Äòdict‚Äô" viene generato quando si tenta di creare un elemento in un dizionario la cui chiave è unhashable oggetto. Solo oggetti immutabili come stringhe, tuple e numeri interi possono essere utilizzati come chiave in un dizionario.

Per risolvere questo errore, assicurati di utilizzare solo oggetti hashable quando crei un elemento in un dizionario. Ora sei pronto per risolvere questo errore comune di Python come uno sviluppatore professionista!

Shop

Learn programming in R: courses

$

Best Python online courses for 2022

$

Best laptop for Fortnite

$

Best laptop for Excel

$

Best laptop for Solidworks

$

Best laptop for Roblox

$

Best computer for crypto mining

$

Best laptop for Sims 4

$

Latest questions

NUMPYNUMPY

psycopg2: insert multiple rows with one query

12 answers

NUMPYNUMPY

How to convert Nonetype to int or string?

12 answers

NUMPYNUMPY

How to specify multiple return types using type-hints

12 answers

NUMPYNUMPY

Javascript Error: IPython is not defined in JupyterLab

12 answers

News


Wiki

Python OpenCV | cv2.putText () method

numpy.arctan2 () in Python

Python | os.path.realpath () method

Python OpenCV | cv2.circle () method

Python OpenCV cv2.cvtColor () method

Python - Move item to the end of the list

time.perf_counter () function in Python

Check if one list is a subset of another in Python

Python os.path.join () method