In questo tutorial del corso online su python andremo ad approfondire i dizionari, ovvero una collezione di oggetti, per certi versi, simile alle liste.

Come per le liste, i dizionari sono dinamici e mutabili. Tuttavia differiscono dalle liste per diversi motivi, come per esempio il modo di accedere agli elementi della collezione tramite chiave(key) e non tramite indice, oppure per il fatto che i dizionari non accettano duplicati.

Sintassi

Un dizionario quindi è una collezione di elementi costituiti da coppie di chiavi e valori, dove ad ogni chiave corrisponde il suo valore.

Puoi definire un dizionario in questo modo:

<dizionario> = {"<key>": <valore>, "<key>": valore, ... "<key>": <valore>}

Quindi per creare un dizionario ci basta inserire all'interno delle parentesi graffe {}, tutte le coppie di chiavi: valori che vogliamo separate dalla virgola. Ad esempio:

spesa = {"Mela": 10, "Pasta": 2, "Coca Cola": 1.50}

Accedere agli elementi

All'inizio di questa lezione ti ho detto che una caratteristica che differisce i dizionari dalle liste è proprio il modo con cui si accede agli elementi. Se nelle liste si utilizza un indice, in questo caso viene utilizzata la chiave (key). Prendiamo l'esempio precedente riguardo la spesa:

spesa = {"Mela": 10, "Pasta": 2, "Coca Cola": 1.50}
print(spesa["Pasta"])

#output
2

Vediamo quindi che otteniamo il valore associato alla chiave "Pasta", ovvero 2.

Ma... cosa succede se fornisco una chiave errata, o che non esiste nel dizionario? Beh andiamo a scoprirlo subito!

spesa = {"Mela": 10, "Pasta": 2, "Coca Cola": 1.50}
print(spesa["Pera"])

#output
KeyError: 'Pera'

Svelato l'arcano. Python quindi, nel caso gli fornissimo una chiave errata al dizionario, solleverà un'eccezione KeyError.

Per visualizzare l'intero dizionario dovremo semplicemente scrivere il nome del dizionario: print(spesa).

Modificare e Aggiungere elementi

Sia per aggiungere o che per modificare un dizionario ci basterà assegnare il valore che vogliamo alla chiave che vogliamo aggiungere/modificare:

spesa = {"Mela": 10, "Pasta": 2, "Coca Cola": 1.50}

spesa["Pera"] = 3.5
print("Pera aggiunta: " + spesa["Pera"])

spesa["Pera"] = 2
print("Pera modificata: " + spesa["Pera"])

#output
Pera aggiunta: 3.5
Pera modificata: 2

Rimuovere elementi

Per rimuovere una coppia di chiavi/valori, dovrai utilizzare la parola chiave del, seguita dalla chiave che vogliamo eliminare:

spesa = {"Mela": 10, "Pasta": 2, "Coca Cola": 1.50}
print(spesa)
del spesa["Mela"]
print(spesa)

#output
{'Mela': 10, 'Pasta': 2, 'Coca Cola': 1.5}
{'Pasta': 2, 'Coca Cola': 1.5}

Metodi built-in

Come le liste, i dizionari hanno una grande quantità di metodi built-in molto interessanti, scopriamone subito qualcuno!

dizionario.get(<chiave>, [<default>])

con il metodo get possiamo ottenere il valore associato alla chiave specificata. Tuttavia, se la chiave non dovesse esistere, invece di sollevare un'eccezione, mi ritornerà come risultato un valore impostato nel parametro opzionale default. Inoltre se viene omesso il valore di default e la chiave inserita non esiste, avremmo come risultato None.

persone = {"Marco": 45, "Gigi": 28}
print(persone.get("Marco"))
print(persone.get("Antonio"))
print(persone.get("Antonio", 10))

#output
45
None
10

Un altro metodo utilie è clear(), il quale, come da traduzione, ci permette di pulire il nostro dizionario rimuovendo tutto il suo contenuto:

persone = {"Marco": 45, "Gigi": 28}
print(persone)
persone.clear()
print(persone)

#output
{'Marco': 45, 'Gigi': 28}
{}

Con il metodo keys(), invece, otteniamo una lista di tuple di tutte le chiavi presenti nel nostro dizionario:

frutta = {"Mela": 2, "Banana": 1, "Pera": 4}
lista_keys = list(frutta.keys())
print(lista_keys)

#output
['Mela', 'Banana', 'Pera']

In maniera analoga il funzionamento di values() per tutti i valori di un dizionario:

spesa = {"Birra": 1.60, "Salame": 2.50, "Nutella": 2}

somma = sum(spesa.values())

print(somma)

#output
6.1

Infine abbiamo il metodo items() il quale ci ritorna una lista di tuple contenente sia le chiavi che i rispettivi valori del nostro dizionario:

frutta = {"Mela": 2, "Banana": 1, "Pera": 4}
lista_items = list(frutta.items())
print(lista_items)

#output
[('Mela', 2), ('Banana', 1), ('Pera', 4)]

Dizionari annidati

Come per le liste, è possibile annidare i dizionari all'interno di altri dizionari. Ad esempio:

spesa = {
"Birra": {"Quantita": 6, "Prezzo": 1.60},
"Patatine": {"Quantita": 3, "Prezzo": 1},
"Latte": {"Quantita": 2, "Prezzo": 1.20}
}

print("Patatine", spesa["Patatine"]["Prezzo"])
spesa[Patatine]["Prezzo"] = 4
print("Patatine", spesa["Patatine"]["Prezzo"])

#output 1
Patatine 1

#output 2
Patatine 4

Iterare sui dizionari

Possiamo effettuare un iterazione sul dizionario in modo molto semplice e conciso:

spesa = {
"Birra": {"Quantita": 6, "Prezzo": 1.60},
"Patatine": {"Quantita": 3, "Prezzo": 1},
"Latte": {"Quantita": 2, "Prezzo": 1.20}
}

tot = 0
for elemento in spesa.keys():
tot += spesa[elemento]["Quantita"] * spesa[elemento]["Prezzo"]

print(tot)

#output
15.000000000000002


Condividi sui Social