Tempo di lettura stimato: 2 minuti
Si dispone di un dizionario Python e si desidera recuperare i dati da esso e stamparli sullo schermo. Ci sono alcune caratteristiche di Python che vanno innanzitutto comprese:
- Sono mutevoli
- Inoltre, hanno la capacità di crescere e ridursi a seconda delle esigenze.
- L'accesso ai dati all'interno del dizionario avviene tramite le chiavi.
L'ultimo punto è molto importante, poiché i dizionari non hanno un valore di indice ed è per questo che si ottiene il TypeError che si sta cercando di risolvere.
Ricostruiamo il problema
Nel codice seguente abbiamo un dizionario chiamato "userdata", con le sue coppie chiave-valore.
Il ciclo cerca di recuperare il valore 1 dell 'indice per tutti i valori in dai_data.
Come si può vedere, dai_data sta cercando di recuperare gli ultimi tre valori dell'indice all'interno del dizionario.
Come già detto, l'unico modo per accedere ai valori del dizionario è attraverso i valori delle chiavi.
userdata = {
"name": "Data Analytics Ireland",
"Country": "Ireland",
"City": "Dublin",
"Age": "1000 years!",
}
dai_data = userdata[:3]
for i in dai_data:
print(i[1])
Output:
Traceback (most recent call last):
File "", line 8, in <module>
dai_data = userdata[:3]
TypeError: unhashable type: 'slice'
Come risolvere questo problema?
Prima di tutto, si accede ai valori attraverso la chiave all'interno del dizionario
Nel dizionario sottostante i valori chiave sono: Nome, Paese, Città, Età
userdata = {
"Name": "Data Analytics Ireland",
"Country": "Ireland",
"City": "Dublin",
"Age": "1000 years!",
}
print(userdata["Name"])
print(userdata["Country"])
print(userdata["City"])
print(userdata["Age"])
Output:
Data Analytics Ireland
Ireland
Dublin
1000 years!
Di conseguenza, ora siamo in grado di accedere ai valori associati a ciascuna chiave.
Sapevate che potete aggiungere un elenco a una delle vostre coppie chiave-valore?
Nell'esempio precedente, ci siamo concentrati su un singolo valore, ma potremmo anche rendere una chiave uguale a un elenco.
userdata = {
"Name": ["Joe","Jim"],
"Country": "Ireland",
"City": ["Dublin","Cork","Limerick"],
"Age": "1000 years!"
}
print(userdata["Name"])
print(userdata["Country"])
print(userdata["City"])
print(userdata["Age"])
Output:
['Joe', 'Jim']
Ireland
['Dublin', 'Cork', 'Limerick']
1000 years!