Operazioni di base sui Dizionari in Python

In questa lezione vedremo quali sono le operazioni di base che possiamo effettuare su un dizionario in Python.

Vedremo, in particolare, come accedere agli elementi di un dizionario in lettura e in scrittura. Vedremo come modificare un elemento di un dizionario e come aggiungere un nuovo elemento. Vedremo anche come rimuovere un elemento da un dizionario e come ottenerne la sua dimensione.

Accedere agli elementi di un Dizionario

Nella lezione precedente abbiamo visto come creare un dizionario in Python. Adesso vediamo come accedere ai suoi elementi sia in lettura che in scrittura.

Partiamo dall'accesso in lettura. Per ottenere un elemento di un dizionario bisogna usare la sua chiave, ossia la chiave con cui è stato memorizzato. Usiamo un dizionario di esempio che associa ad ogni giorno della settimana il suo numero:

giorni = {
    "lunedì": 1,
    "martedì": 2,
    "mercoledì": 3,
    "giovedì": 4,
    "venerdì": 5,
    "sabato": 6,
    "domenica": 7
}

Supponendo di voler accedere al numero del venerdì, possiamo farlo in questo modo:

print(giorni["venerdì"])

Il risultato sarà:

5

La sintassi è in effetti molto simile a quella adoperata per accedere agli elementi di una lista. La differenza è che per accedere ad un elemento di una lista si usa un indice numerico, mentre per accedere ad un elemento di un dizionario si usa la chiave.

Definizione

Ottenere un elemento di un dizionario

Per ottenere un elemento di un dizionario si usa la sintassi seguente:

dizionario[chiave]

Nel caso in cui la chiave non sia presente nel dizionario, Python solleverà un'eccezione di tipo KeyError:

print(giorni["blah"])

Il risultato sarà:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'blah'
Definizione

Chiave assente

In caso di assenza di una chiave in un dizionario, Python solleverà un'eccezione di tipo KeyError.

Metodo get di un dizionario

Un modo alternativo di ottenere un valore da un dizionario è quello di usare il metodo get. Questo metodo applicato ad un dizionario si comporta allo stesso modo della sintassi usuale. Il metodo get accetta come argomento la chiave da cercare e restituisce il valore associato.

Ad esempio, tornando al caso dei giorni della settimana, le due sintassi seguenti sono equivalenti:

print(giorni["venerdì"])
print(giorni.get("venerdì"))

Entrambe restituiscono:

5

Il vantaggio di usare il meotodo get sta nel fatto che se la chiave non esiste, anziché sollevare un eccezione, il metodo restituisce None.

Il valore None è un valore speciale di Python che viene utilizzato per indicare l'assenza di un valore. Vedremo meglio cosa significa nelle prossime lezioni.

Vediamo un esempio:

print(giorni.get("blah"))

Il risultato sarà:

None

Il metodo get accetta anche un secondo argomento opzionale. Questo argomento viene restituito nel caso in cui la chiave non sia presente nel dizionario. Torniamo all'esempio dei giorni della settimana e supponiamo di voler restituire il valore 0 nel caso in cui la chiave non sia presente:

print(giorni.get("lunedì", 0))
print(giorni.get("blah", 0))

Il risultato sarà:

1
0

Nel primo caso la chiave è presente, quindi il metodo get restituisce il valore associato. Nel secondo caso la chiave non è presente, quindi il metodo get restituisce il valore 0 che abbiamo passato come secondo argomento.

Attraverso il metodo get possiamo anche implementare un semplice meccanismo di verifica della presenza di una chiave in un dizionario:

valore = giorni.get("blah", 0)
if valore == 0:
    print("La chiave non è presente")
else:
    print("La chiave è presente")

Il risultato sarà:

La chiave non è presente

Questo è un meccanismo abbastanza semplice, ma che può essere utile in alcuni casi. Vedremo in seguito altri meccanismi più avanzati per verificare la presenza di una chiave in un dizionario.

Ricapitolando:

Definizione

Metodo get di un dizionario

Il metodo get applicato ad un dizionario accetta come argomento la chiave da cercare e restituisce il valore associato. La sintassi è la seguente:

dizionario.get(chiave)

Se la chiave non è presente nel dizionario, il metodo restituisce None.

Il metodo get accetta anche un secondo argomento opzionale. Questo argomento viene restituito nel caso in cui la chiave non sia presente nel dizionario. La sintassi è la seguente:

dizionario.get(chiave, valore_di_default)

Modificare un dizionario

Abbiamo visto come accedere agli elementi di un dizionario in lettura. Vediamo, adesso, come accedere in lettura, ossia modificando oppure aggiungendo elementi al dizionario stesso.

Per modificare un elemento di un dizionario è sufficiente usare la sintassi di accesso in un'espressione di assegnamento:

dizionario[chiave] = valore

Per esempio, supponiamo di avere un dizionario che associa ad ogni città il numero di abitanti:

abitanti = {
    "Milano": 1350000,
    "Roma": 2870000,
    "Napoli": 967000,
    "Torino": 870000,
    "Palermo": 670000
}

Supponiamo di voler modificare il numero di abitanti della città di Milano. Possiamo farlo in questo modo:

abitanti["Milano"] = 1351000

Adesso, se andiamo a stampare il contenuto del dizionario otteniamo:

print(abitanti)

Il risultato sarà:

{'Milano': 1351000, 'Roma': 2870000, 'Napoli': 967000, 'Torino': 870000, 'Palermo': 670000}

Come possiamo vedere, il valore associato alla chiave "Milano" è stato modificato.

Definizione

Modificare un elemento di un dizionario

Per modificare un elemento di un dizionario è sufficiente usare la sintassi di accesso in un'espressione di assegnamento:

dizionario[chiave] = nuovo_valore

Aggiungere un elemento ad un dizionario

La stessa sintassi di modifica può essere usata per aggiungere un nuovo elemento al dizionario stesso. Infatti, quando usiamo la sintassi di accesso con una chiave che non esiste nel dizionario, Python automaticamente crea un nuovo elemento.

Ritornando all'esempio di prima, supponiamo di voler aggiungere il numero di abitanti di Bologna. A questo punto è sufficiente scrivere:

abitanti["Bologna"] = 380000

Se proviamo a stampare il contenuto del dizionario otteniamo:

print(abitanti)

Il risultato sarà:

{'Milano': 1351000, 'Roma': 2870000, 'Napoli': 967000, 'Torino': 870000, 'Palermo': 670000, 'Bologna': 380000}

Come possiamo vedere, il dizionario contiene ora anche il numero di abitanti di Bologna.

Definizione

Aggiungere elementi ad un Dizionario

Per aggiungere un nuovo elemento ad un dizionario è sufficiente usare un'espressione di assegnamento con una chiave che non esiste nel dizionario:

dizionario[nuova_chiave] = valore

Rimuovere un elemento da un dizionario

Analogamente al caso delle liste, anche per i dizionari è possibile eliminare un elemento utilizzando l'istruzione del. La sintassi è la seguente:

del dizionario[chiave]

Per esempio, supponiamo di voler rimuovere il numero di abitanti di Bologna dal dizionario. Possiamo farlo in questo modo:

del abitanti["Bologna"]

Se proviamo a stampare il contenuto del dizionario otteniamo:

print(abitanti)

Il risultato sarà:

{'Milano': 1351000, 'Roma': 2870000, 'Napoli': 967000, 'Torino': 870000, 'Palermo': 670000}

Come possiamo vedere, il dizionario non contiene più il numero di abitanti di Bologna.

Definizione

Rimuovere elementi da un Dizionario

Per rimuovere un elemento da un dizionario bisogna usare l'istruzione del:

del dizionario[chiave]

Dimensione di un dizionario

L'ultima operazione di base riguardante i dizionari che vedremo in questa lezione è quella per ottenere la dimensione di un dizionario.

Per ottenere la dimensione di un dizionario, ossia il numero di elementi che contiene, possiamo usare la funzione len:

giorni = {
    "lunedì": 1,
    "martedì": 2,
    "mercoledì": 3,
    "giovedì": 4,
    "venerdì": 5,
    "sabato": 6,
    "domenica": 7
}

print(len(giorni))

Il risultato sarà:

7

La funzione len infatti accetta come argomento un oggetto iterabile e restituisce il numero di elementi che contiene. Per questo motivo può essere usata anche per ottenere la dimensione di una lista o di una tupla.

Definizione

Dimensione di un dizionario

La funzione len applicata ad un dizionario restituisce il numero di elementi che contiene. La sintassi è la seguente:

len(dizionario)

In Sintesi

In questa lezione abbiamo visto alcune delle operazioni fondamentali che in Python è possibile effettuare su un dizionario:

  • come accedere agli elementi di un dizionario in lettura e in scrittura attraverso l'operatore di accesso [];
  • come modificare un elemento di un dizionario;
  • come aggiungere un nuovo elemento ad un dizionario;
  • come rimuovere un elemento da un dizionario;
  • come ottenere la dimensione di un dizionario.

Nella prossima lezione vedremo quali sono i metodi che un dizionario supporta.