Come usare i dizionari in Python

Ecco un tutorial passo-passo sui dizionari in Python, pensato per accompagnarti dalla creazione di base fino a esempi più avanzati e “real world”. Ogni sezione contiene spiegazioni semplici e codice di esempio che puoi copiare, incollare ed eseguire subito.

1. Cos’è un dizionario

Un dizionario è una struttura dati che memorizza coppie chiave → valore (mapping).

  • Le chiavi (keys) devono essere immutabili (stringhe, numeri, tuple immutabili…)
  • I valori (values) possono essere di qualsiasi tipo.
# esempio di dizionario vuoto
d = {}
# o con dict()
d2 = dict()

2. Creare un dizionario con elementi

# definizione letterale
persona = {
    "nome": "Alice",
    "età": 30,
    "città": "Roma"
}

# oppure usando il costruttore dict()
frutta = dict(mela=5, banana=3, arancia=7)

3. Accesso ai valori

  • Accesso tramite chiave (solleva KeyError se non esiste)
  • metodo .get() (ritorna None o valore di default se chiave mancante)
print(persona["nome"])        # → "Alice"
print(persona.get("nome"))    # → "Alice"
print(persona.get("telefono"))        # → None
print(persona.get("telefono", "n.d."))  # → "n.d."

4. Aggiungere o modificare elementi

Assegnando su una chiave nuova o esistente:

# aggiungere
persona["email"] = "alice@example.com"
# modificare
persona["età"] = 31

5. Rimuovere elementi

  • del d[key]
  • value = d.pop(key[, default])
  • d.clear() per svuotare tutto
  • del d per eliminare il dizionario
email = persona.pop("email")   # rimuove e ritorna il valore
del persona["città"]           # rimuove senza ritorno
persona.clear()                # ora persona == {}

6. Iterazione

Puoi iterare su:

  • chiavi: for k in d:
  • valori: for v in d.values():
  • coppie: for k, v in d.items():
d = {"a": 1, "b": 2, "c": 3}

for key in d:
    print(key, d[key])

for valore in d.values():
    print(valore)

for chiave, valore in d.items():
    print(f"{chiave} → {valore}")

7. Principali metodi utili

MetodoCosa fa
d.keys()restituisce un oggetto “view” delle chiavi
d.values()restituisce view dei valori
d.items()view delle coppie (key, value)
d.update(other)unisce/aggiorna con un altro dizionario o iterable
d.clear()svuota il dizionario
d.pop(key)rimuove e restituisce il valore
d.popitem()rimuove e restituisce l’ultima coppia inserita (3.7+)
d.setdefault(k,v)se k non esiste la crea con valore v; ritorna d[k]
d.copy()copia “shallow”

8. Dizionari annidati

rubrica = {
    "Mario": {"telefono": "1234", "email": "mario@esempio.com"},
    "Lucia": {"telefono": "5678", "email": "lucia@esempio.com"}
}

# accesso
print(rubrica["Mario"]["email"])  # → "mario@esempio.com"

9. Comprehension di dizionari

Per costruire un dizionario in modo compatto:

# quadratiche: 1→1, 2→4, ..., 5→25
quad = {x: x*x for x in range(1, 6)}

# filtrare: solo quadrati pari
quad_pari = {x: x*x for x in range(1, 11) if (x*x) % 2 == 0}

10. Esempio “real-world”: contare parole in un testo

def conta_parole(testo: str) -> dict:
    d = {}
    for parola in testo.split():
        parola = parola.lower().strip('.,!?')
        d[parola] = d.get(parola, 0) + 1
    return d

testo = "Ciao mondo! Ciao ChatGPT. Mondo, mondo."
print(conta_parole(testo))
# → {'ciao': 2, 'mondo': 3, 'chatgpt': 1}

Conclusione e consigli

  • Ordine di inserimento: da Python 3.7 i dizionari mantengono ordine di inserimento.
  • Chiavi immutabili: solo tipi hashable.
  • Usali per: contatori, mapping di configurazioni, caching, strutture JSON-like.

Spero sia chiaro e ti aiuti a sfruttare al meglio i dizionari in Python! Se hai domande o vuoi approfondire qualche aspetto, scrivi pure.