TypeError: unhashable type: ‘list’

TypeError: unhashable type: ‘list’ di solito significa che si sta tentando di utilizzare un elenco come argomento hash. Ciò significa che quando si tenta di hash un oggetto unhashable si tradurrà in un errore. Per es. quando si utilizza un elenco come chiave nel dizionario, questo non può essere fatto perché gli elenchi non possono essere sottoposti a hash. Il modo standard per risolvere questo problema è lanciare un elenco su una tupla .

Che cos'è Python: TypeError: unhashable type: 'list'

esempio

output

Questo errore mostra che la chiave my_dict è List e List non è un tipo hashable in Python . Le chiavi del dizionario devono essere tipi immutabili e list è un tipo mutabile.

Fix: Cast list in una tupla

Dovrai cambiare la tua lista in tuple se vuoi metterle come chiavi nel tuo dizionario .

output

L’hash() è un metodo python integrato, utilizzato per restituire un numero univoco . Questo può essere applicato a qualsiasi oggetto definito dall’utente che non verrà modificato una volta inizializzato. Questa proprietà è utilizzata principalmente nelle chiavi del dizionario .

Esempi di oggetti Unhashable:

Tuple e List

Sebbene le tuple possano sembrare simili alle liste, vengono spesso utilizzate in diverse situazioni e per scopi diversi. Le tuple sono immutabili e di solito contengono una sequenza eterogenea di elementi a cui si accede tramite decompressione o indicizzazione . Gli elenchi sono mutabili e i loro elementi sono solitamente omogenei e si accede iterando sull’elenco.

Python Tuple and List

Hashing

Hashing è un concetto in informatica che viene utilizzato per creare ad alte prestazioni , pseudo strutture di dati ad accesso casuale in cui grandi quantità di dati deve essere memorizzato e accessibile rapidamente. Gli oggetti immutabili, o gli oggetti che non possono essere modificati, sono hashable e hanno un singolo valore univoco che non cambierà mai. Una funzione di hashing è una funzione che prende un oggetto, ad esempio una stringa come “Java” e restituisce un codice di dimensioni fisse, supponiamo che il valore restituito sia un numero intero .