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()(ritornaNoneo 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 tuttodel dper 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
| Metodo | Cosa 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.
