Come posso correggere TypeError: unhashable type: 'list' Error?

Tempo di lettura stimato: 3 minuti

Quando si programma in python ci si imbatte in questo errore abbastanza spesso, in questo caso è abbastanza facilmente risolvibile una volta compreso.

Il problema si pone di solito quando si cerca di far passare in loop un dizionario con le coppie chiave-valore. Se non si è sicuri dell'aspetto di un dizionario, vedere W3 Schools

Esaminiamo quei loop che non lanciano l'errore.

Utilizzando una lista, produce la seguente uscita senza errori:

list = [['a'],['b'],['c'],['d'],['e'],['f']]
print(type(list))
for i in list:
    print(i)
<class 'list'>
['a']
['b']
['c']
['d']
['e']
['f']

Se è necessaria una tupla, allora le seguenti uscite senza errori:

list = (['a'],['b'],['c'],['d'],['e'],['f'])
print(type(list))
for i in list:
    print(i)
<class 'tuple'>
['a']
['b']
['c']
['d']
['e']
['f']

Utilizzando un dizionario, fornisce l'errore che si sta cercando di risolvere, ma perché?

list = {['a'],['b'],['c'],['d'],['e'],['f']}
print(type(list))
for i in list:
    print(i)
list = {['a'],['b'],['c'],['d'],['e'],['f']}
TypeError: unhashable type: 'list'

Per capire l'errore è importante fare un passo indietro e capire cosa sta succedendo in ogni scenario:

(A) Passando in loop attraverso la lista, guarda i valori da soli, così il loop si completa senza problemi.

(B) Come per le liste, le tuple sono immutabili (non possono essere modificate), ma soprattutto possono essere fatte passare in loop senza errori.

In questo caso le liste hanno valori singoli, il dizionario di cui sopra ha un solo valore, ne prevede due, da cui l'errore.

Come possiamo correggere questo errore andando avanti?

Il modo più semplice è quello di inserire un elenco di singoli articoli con il codice iterabile qui sotto:

fixlist = [[['a'],['b'],['c'],['d'],['e'],['f'],['f'],['c']]
# Converte fixlist da una lista di liste a una lista piatta, e rimuove i duplicati con set
fixlist = lista(set(lista(itertools.chain.from_iterable(fixlist))))
print(fixlist)
Risultato : ['d', 'f', 'c', 'b', 'a', 'e']

Ora il vostro codice sta cercando di far passare in loop solo alcuni singoli valori all'interno della vostra lista, rispetto alle coppie chiave-valore del dizionario.

L'approccio alla soluzione di questo problema attraverso un'iterazione linea per linea ha aiutato a individuare il problema.

Di conseguenza i passi che ho fatto per risolvere il problema:

(A) stampa(tipo(variabile)) - Usatela per il passaggio dei dati per vedere quali sono i tipi di dati, chiarisce se questo è il problema.

(B) Di conseguenza, una volta trovata la riga di codice che lanciava l'errore, la rimozione del dizionario ha risolto il problema.

Oppure

Se è necessario un dizionario da far passare in loop, è necessaria la chiave corretta, la configurazione delle coppie di valori.

Conclusione

In conclusione, per eliminare questo errore è importante identificare la riga e/o le righe, che hanno un dizionario e nasconderle in un elenco

oppure

se è necessario un dizionario, assicurarsi che le liste siano convertite in un dizionario con chiave, coppie di valori.

Se volete vedere un'ottima spiegazione video di questo errore andate sul canale YouTube di Brandon Jacobson e assicuratevi di iscrivervi.

La sua spiegazione è riportata di seguito:

Cos'è l'analisi dei dati?

Tempo di lettura stimato: 4 minuti

Negli ultimi anni l'analitica dei dati e l'importanza dell'analisi dei dati è aumentata notevolmente.

Di conseguenza, la quantità di dati trattati è aumentata.

Qui in Data Analytics Ireland, cercheremo di spiegare il concetto, si prega di condividere o collegare questo articolo in modo che altri possano vedere il suo contenuto.

Per cominciare, la ragione è che l'economia digitale è decollata, in particolare:

(A) Automazione dei compiti è diventata più facile.

(B) Meno uso di carta, diventando un'economia più verde.

(C) I miglioramenti tecnologici hanno fatto sì che l'archiviazione e la grande elaborazione dei dati rendano più facile il processo di fornitura dei servizi.

(D) Le opportunità di carriera per i professionisti con buone competenze sono aumentate.

(E) Una vasta gamma di strumenti open source e a pagamento sono ora facilmente disponibili che aiutano a elaborare e riferire sui dati.

(F) I requisiti per l'ingresso sono semplici, e questo, insieme alla capacità di acquisire rapidamente conoscenze e competenze, aiuta l'ingresso sia che si voglia essere a tempo pieno o a tempo parziale.

(G) Le conoscenze e le competenze sono migliorate in quanto l'accesso all'apprendimento online è migliorato significativamente.

Come risultato di tutto questo:

(A) È necessario analizzare grandi volumi di dati.

(B) Le abitudini dei consumatori su come usano un servizio o le informazioni che cercano hanno ormai un'impronta digitale.

(C) Ora, una volta che un consumatore ha usato un servizio (acquistato o no), la capacità di capire le sue abitudini può essere catturata per fornire quanto segue:

  1. I servizi che vogliono.
  2. I prodotti che vogliono.
  3. Tempo di risposta più veloce.

Come può essere d'aiuto con tutti i dati che vengono catturati e memorizzati?

Quindi, in questo articolo, abbiamo già delineato lo sfondo di come l'industria si è evoluta fino a dove si trova ora l'analisi dei dati.

Come sottolineato, tutte le informazioni tradizionalmente non sarebbero state conservate in un formato facilmente accessibile.

Passo 1 - Acquisizione dei dati

Per capire ciò che si vuole analizzare e aiutare a trarre conclusioni in modo accurato, un analista di dati lavorerà con i suoi colleghi tecnici per garantire che i dati corretti vengano catturati.

L'acquisizione di dati grezzi può avvenire in diversi modi:

  • Ingresso dell'utente.
  • Interazione con un sito web o un'applicazione.
  • Consumare un servizio.
  • Richiedere il completamento di un servizio.
  • Interazione con i social media.
  • In molti casi ora questo avviene in tempo reale.

Una volta che la completezza e l'accuratezza sono soddisfatte, la qualità dei tuoi dati diventerà meno un problema, più usi il data profiling.

Date un'occhiata qui per ulteriori informazioni sulla completezza e su cos'è il profiling dei dati e i suoi benefici.

Fase 2 - Analisi

(A) Si creano grafici visivi; questo permette a chi guarda le informazioni di avere una prima visione delle informazioni senza guardare i dati sottostanti. A volte questo mostrerà i modelli nei dati o i cluster o i tipi di dati che si catturano.

(B) Usare le statistiche di scienza dei dati per vedere se possono spiegare i dati. Questo potrebbe mostrare informazioni come la correlazione dei dati o altro. Inoltre, le probabilità potrebbero essere calcolate per mostrare quali risultati potrebbero verificarsi in futuro.

(C) Gli analisti di dati potrebbero anche aver bisogno di capire come costruire un modello di apprendimento automatico per utilizzare algoritmi complessi, per spiegare meglio i dati, a volte i modelli che non sono immediatamente compresi possono essere portati alla luce e indagati ulteriormente.

Passo 3 - Presentare

Un enfatico NO è una risposta, ma è qui che entrano in gioco alcuni strumenti di visualizzazione!

Presentare visivamente i punti di dati, molto rapidamente permette a un osservatore delle informazioni di giungere a una decisione rapidamente, e gli strumenti che sono delineati qui sotto aiuteranno con quel processo.

Questi sono una manciata che permettono di affettare e tagliare i dati, ce ne sono molti altri là fuori, ma tutti permettono ai dati di essere approfonditi e di arrivare a una reale comprensione di ciò che sta succedendo.

Alcuni degli strumenti includono Tableau, Power BI, e Python(ha librerie che fanno un buon lavoro)

Passo 4 - Prendere una decisione

Quindi, dopo tutta questa analisi, bisogna prendere delle decisioni:

(A) Avete i dati in ordine e nel formato corretto?

(B) In un luogo che sia accessibile e revisionabile.

(C) Rilevante per quando la decisione deve essere presa.

Fin dall'inizio, nell'ambito del lavoro di analisi dei dati, è necessario valutare con quale frequenza sarà necessario prendere una decisione, con quali dati e quando.

A questo punto, i decisori dovrebbero avere una serie di dati pronti da esaminare e prendere una decisione in modo affidabile

Sulla base dei dati restituiti, se non possono prendere una decisione, allora forse, i passi 1-3 dovrebbero essere rivisti e rivisitati.

Spesso quello che succede è che le informazioni che erano necessarie per fare un cambiamento devono essere aggiornate o migliorate.

Il compito dei team che gestiscono i set di dati è quello di reperire i dati o di modificare il modo in cui li presentano, in modo da riflettere la decisione che deve essere presa.

pulizia dei dati in un ambiente aziendale

Sono stato su LinkedIn di recente e, guardando il mio profilo, ho visto un post che avevo postato circa sei anni fa su Data Cleansing. Una cosa che mi ha colpito è che gli argomenti che ho sollevato allora sono rilevanti come lo sono oggi, e con Big Data oggi molte aziende si stanno chiedendo come gestire tutti questi dati in un panorama in continua evoluzione. Così ho pensato di condividerli di nuovo.

Il caso Business

(A) I dati di prova soddisfano i requisiti dell'industria.

In alcuni settori, è un requisito legale avere tutti i vostri dati con il formato e la descrizione corretti. Tutte le informazioni non incluse devono essere rimosse in base alle regole aziendali. Oggi le aziende operano su più piattaforme elettroniche, stampa, video, ecc., è necessario un processo che garantisca la sincronizzazione dei dati!

(B) Controllare se compaiono parole indesiderate

Il marchio e la reputazione sono fondamentali, e le aziende grandi e piccole hanno bisogno di un meccanismo per capire quali informazioni sono state scritte online insieme a qualsiasi loro profilo. La pulizia dei dati può essere il primo punto di chiamata a parole indesiderate che danneggerebbero il marchio.

Il caso tecnico

(A)Remove unwanted characters such as !”£$%^&*@’;:#~?>< etc.

Quando vengono presentati con un insieme di dati provenienti da un'altra fonte, possono essere in un formato grezzo, e se si cerca di raggruppare le parole o i numeri nel proprio set di dati, questo a volte può portare a un raggruppamento sbagliato.

(B) Dati del gruppo

A volte è necessario raggruppare nomi o numeri specifici per vedere quanto spesso compaiono. Avere questo problema può diventare problematico se non è stata avviata una prima revisione dei dati, come nel caso del punto A di cui sopra. Quindi volete controllare la presenza di Facebook nel vostro set di dati e se ci sono sei occorrenze di esso 4* Facebook! e 2*Facebook, il vostro raggruppamento sarà errato, dandovi l'analisi sbagliata.

(C)Preparare i dati

La ragione principale per la pulizia dei dati è di averli pronti per essere elaborati. Spesso o no, il processo è una fase iniziale prima dell'inizio di un'ulteriore elaborazione. L'elaborazione dura avrà dei controlli incorporati per assicurarsi che i dati siano nel formato corretto, se non lo sono, falliranno. Questa fase sarebbe cruciale in un processo automatizzato.

(D)Controllo dei valori nulli

A volte un sistema può essere impostato per elaborare i dati o ricevere dati da un fornitore terzo. Potrebbe essere imperativo che i campi specifici non siano vuoti o debbano essere vuoti a seconda delle esigenze aziendali. L'analisi iniziale per identificare questi valori attraverso il processo di pulizia dei dati dovrebbe aiutare a mitigare eventuali problemi prima che i dati vengano caricati in sistemi che hanno controlli rigorosi su di essi.