Python - Dizionari Annidati
Ciao a tutti, aspiranti coder! Oggi esploreremo il fascinante mondo dei dizionari annidati in Python. Non preoccupatevi se siete nuovi alla programmazione: vi guiderò passo per passo attraverso questo argomento, proprio come ho fatto per innumerevoli studenti durante gli anni della mia insegnamento. Quindi, prenda il suo bevanda preferita, si rilassi e ci imbarciamo insieme in questa avventura Python!
Dizionari Annidati
Cos'è un Dizionario Annidato?
Immagina di avere una grande scatola (il dizionario principale) e all'interno di questa scatola ci siano diverse scatole più piccole (i dizionari annidati). Ogni una di queste scatole più piccole può contenere vari oggetti (coppie chiave-valore). Questo, in sostanza, è un dizionario annidato: un dizionario all'interno di un altro dizionario.
Iniziamo con un esempio semplice:
studente = {
"nome": "Alice",
"età": 20,
"voti": {
"matematica": 95,
"scienze": 88,
"storia": 92
}
}
In questo esempio, studente
è il nostro dizionario principale. Contiene informazioni di base su Alice, inclusa un dizionario annidato voti
che contiene i suoi punteggi in diverse materie.
Creazione di un Dizionario Annidato in Python
Creare un dizionario annidato è simile a creare un dizionario normale, ma si aggiunge un altro dizionario come valore. Creiamo un esempio più complesso - un elenco delle classi di una scuola:
scuola = {
"Classe 9": {
"Alice": {
"età": 14,
"materie": ["Matematica", "Scienze", "Inglese"]
},
"Bob": {
"età": 15,
"materie": ["Storia", "Arte", "Educazione Fisica"]
}
},
"Classe 10": {
"Charlie": {
"età": 16,
"materie": ["Fisica", "Chimica", "Biologia"]
}
}
}
Qui, abbiamo un dizionario principale scuola
, che contiene i livelli delle classi come chiavi. Ogni livello di classe contiene i nomi degli studenti come chiavi. Ogni studente ha poi il proprio dizionario con informazioni personali.
Aggiunta di Elementi a un Dizionario Annidato in Python
Aggiungere elementi a un dizionario annidato è semplice. Puoi aggiungere una nuova coppia chiave-valore a un dizionario annidato esistente o creare un nuovo dizionario annidato del tutto.
Aggiungiamo un nuovo studente alla Classe 10:
scuola["Classe 10"]["Diana"] = {
"età": 15,
"materie": ["Matematica", "Informatica", "Letteratura"]
}
print(scuola["Classe 10"])
Output:
{
'Charlie': {'età': 16, 'materie': ['Fisica', 'Chimica', 'Biologia']},
'Diana': {'età': 15, 'materie': ['Matematica', 'Informatica', 'Letteratura']}
}
Possiamo anche aggiungere un nuovo livello di classe:
scuola["Classe 11"] = {
"Eve": {
"età": 17,
"materie": ["Economia", "Psicologia", "Francese"]
}
}
print(scuola.keys())
Output:
dict_keys(['Classe 9', 'Classe 10', 'Classe 11'])
Accesso agli Elementi di un Dizionario Annidato in Python
Per accedere agli elementi di un dizionario annidato, usiamo più parentesi quadre, ognuna rappresenta un livello di annidamento. Recuperiamo alcune informazioni dal nostro dizionario scuola
:
# Ottenendo l'età di Alice
alice_età = scuola["Classe 9"]["Alice"]["età"]
print(f"Età di Alice: {alice_età}")
# Ottenendo le materie di Charlie
charlie_materie = scuola["Classe 10"]["Charlie"]["materie"]
print(f"Materie di Charlie: {charlie_materie}")
Output:
Età di Alice: 14
Materie di Charlie: ['Fisica', 'Chimica', 'Biologia']
Ricorda, se non sei sicuro della struttura del tuo dizionario annidato, puoi sempre usare il metodo get()
per evitare eccezioni KeyError:
# Provando a ottenere uno studente non esistente
frank_età = scuola.get("Classe 9", {}).get("Frank", {}).get("età", "Non trovato")
print(f"Età di Frank: {frank_età}")
Output:
Età di Frank: Non trovato
Eliminazione di un Dizionario da un Dizionario Annidato
Per rimuovere un dizionario annidato, usiamo la parola chiave del
. Rimuoviamo Bob dalla Classe 9:
del scuola["Classe 9"]["Bob"]
print(scuola["Classe 9"])
Output:
{'Alice': {'età': 14, 'materie': ['Matematica', 'Scienze', 'Inglese']}}
Attenzione quando si eliminano elementi dai dizionari annidati. Assicurati sempre che le chiavi esistano per evitare eccezioni KeyError.
Iterazione attraverso un Dizionario Annidato in Python
Iterare attraverso un dizionario annidato richiede cicli annidati. Stampiamo tutte le informazioni nel nostro dizionario scuola
:
for classe, studenti in scuola.items():
print(f"\n{classe}:")
for studente, info in studenti.items():
print(f" {studente}:")
for chiave, valore in info.items():
print(f" {chiave}: {valore}")
Output:
Classe 9:
Alice:
età: 14
materie: ['Matematica', 'Scienze', 'Inglese']
Classe 10:
Charlie:
età: 16
materie: ['Fisica', 'Chimica', 'Biologia']
Diana:
età: 15
materie: ['Matematica', 'Informatica', 'Letteratura']
Classe 11:
Eve:
età: 17
materie: ['Economia', 'Psicologia', 'Francese']
Questa struttura di ciclo annidato consente di accedere e stampare tutti i livelli del nostro dizionario annidato.
Metodi per Lavorare con Dizionari Annidati
Ecco una tabella di metodi utili per lavorare con dizionari annidati:
Metodo | Descrizione |
---|---|
dict.items() |
Restituisce un oggetto vista contenente coppie chiave-valore del dizionario |
dict.keys() |
Restituisce un oggetto vista contenente le chiavi del dizionario |
dict.values() |
Restituisce un oggetto vista contenente i valori del dizionario |
dict.get(key, default) |
Restituisce il valore per la chiave specificata se esiste, altrimenti restituisce il valore predefinito |
dict.update(other_dict) |
Aggiorna il dizionario con elementi da un altro dizionario o iterable di coppie chiave-valore |
dict.pop(key, default) |
Rimuove e restituisce il valore per la chiave specificata. Se la chiave non esiste, restituisce il valore predefinito |
Ricorda, questi metodi possono essere applicati a qualsiasi livello di un dizionario annidato.
E ce l'abbiamo fatta, miei cari studenti! Abbiamo esplorato i dettagli dei dizionari annidati in Python. Dalla creazione e aggiunta di elementi all'accesso, eliminazione e iterazione attraverso di essi, ora hai gli strumenti per lavorare con queste strutture di dati complesse.
Come con ogni concetto di programmazione, la pratica è la chiave. Prova a creare i tuoi dizionari annidati, magari un catalogo digitale di una biblioteca o un libro di ricette. Più gioca con queste strutture, più ti sentirai a tuo agio.
Ricorda, nel mondo della programmazione, gli errori sono solo opportunità per imparare. Quindi non aver paura di sperimentare e fare errori - è così che noi tutti cresciamo come coder. Continua a programmare, a imparare e, soprattutto, a divertirti con Python!
Credits: Image by storyset