elenco di tipi non hash python

I

dizionari Python accettano solo tipi di dati hashable come chiave in un dizionario. Un elenco non è un tipo di dati hashable. Se specifichi un elenco come chiave in un dizionario, incontrerai un "TypeError: unhashable type: ‚Äòlist‚Äô" error.

In questa guida, parliamo di cosa significa questo errore e perché lo vedi nel tuo codice. Esamineremo un esempio di questo errore per mostrarti come risolverlo.

TypeError: unhashable type: ‘list’

I dizionari hanno due parti: chiavi e valori. Le chiavi sono le etichette associate a un particolare valore. Per accedere a un valore, devi fare riferimento al nome della chiave di quel valore.

Anche se i valori possono essere di qualsiasi tipo di dati, da elenca a stringhe, solo gli oggetti hashable sono accettabili come chiavi. Gli oggetti hashable sono oggetti con un valore hash che non cambia nel tempo. Esempi di oggetti hashable sono tuple e stringhe.

Le liste non hanno un valore hash immutabile. I loro valori hash possono cambiare nel tempo. Ciò significa che non è possibile specificare un elenco come chiave del dizionario.

Uno scenario di esempio

Costruiamo un programma che crei un elenco di studenti con un voto medio di oltre 75. Questo elenco conterrà i record del dizionario di ogni studente ei loro voti. Per creare questo dizionario, lavoreremo da un dizionario con un elenco di tutti gli studenti di una scuola e i loro voti.

Cominciamo definendo un elenco di studenti e un dizionario per i nostri migliori studenti:

Ogni valore nel campo "studenti" list è un dizionario. Ogni dizionario contiene due chiavi: nome e voti. Abbiamo definito un dizionario chiamato "top_students" che conterrà le informazioni sui nostri migliori studenti.

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 del bootcamp ha trascorso meno di sei mesi nella transizione di carriera, dall’avvio di un bootcamp alla ricerca del primo lavoro.

Ora che abbiamo definito questo dizionario, utilizziamo un ciclo for per filtrare gli studenti con voti medi superiori a 75 e aggiungerli al nostro nuovo dizionario:

In ogni iterazione del ciclo for, calcoliamo il media di tutti i voti che uno studente ha guadagnato. Lo facciamo dividendo il totale di tutti i voti per quanti voti sono stati registrati.

Successivamente, controlliamo se quella media è maggiore di 75. In caso affermativo, creiamo una nuova voce in il dizionario top_students con il nome di uno studente e i suoi voti.

Infine, stampiamo il dizionario top_students sulla console in modo da vedere tutti gli studenti che hanno un voto medio superiore a 75:

Esegui il nostro codice e guarda cosa succede:

Il nostro codice non viene eseguito correttamente.

Il Soluzione

Il nostro codice funziona fino a quando l’interprete non raggiunge la riga 11. Su questa riga, il nostro codice afferma:

L’errore nel nostro codice è dovuto al fatto che abbiamo cercato di assegnare un elenco come una chiave in un dizionario. Quando il nostro codice analizza questa riga alla prima iterazione del nostro ciclo, il nostro codice prova a creare un dizionario con la chiave e il valore seguenti:

Questo è un dizionario non valido. Il nostro codice cerca di assegnare una lista come chiave che non funziona.

Per risolvere questo problema, usiamo il nome dello studente come chiave nel dizionario invece dell’elenco dei voti:

Abbiamo assegnato l’elenco dei voti come valore anziché come chiave. Il nome dello studente è la chiave nel dizionario. Eseguiamo il nostro codice:

Il nostro codice crea con successo un dizionario con informazioni sugli studenti migliori. Tutti gli studenti il ‚Äã‚Äãcui voto medio nelle ultime tre prove è superiore a 75 è stato aggiunto al dizionario.

Il nostro dizionario è cosi suddiviso:

  • Chiavi: Linda, Holly
  • Valori: [84, 82, 65], [72, 74, 81]

Poiché ora stiamo assegnando stringhe ai nomi delle nostre chiavi, il nostro codice funziona.

Conclusione

L’errore "TypeError: unhashable type: ‚Äòlist‚Äô" viene generato quando si tenta di assegnare un elenco come chiave in un dizionario. Per risolvere questo errore, assicurati di assegnare solo un oggetto hashable, come un stringa o tupla, come chiave per un dizionario.

Ora sei pronto per risolvere questo errore come un programmatore 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