Dizionario annidato in Python

Manav Narula 30 marzo 2021
Dizionario annidato in Python

Un dizionario annidato Python è un dizionario all’interno di un dizionario, dove anche i valori del dizionario esterno sono dizionari. Il codice seguente mostra un esempio elementare.

d1 = {
    0: {"Dept": "Mathematics", "Prof": "Dr Jack"},
    1: {"Dept": "Physics", "Prof": "Dr Mark"},
}
print(d1)

Produzione:

{0: {'Dept': 'Mathematics', 'Prof': 'Dr Jack'}, 1: {'Dept': 'Physics', 'Prof': 'Dr Mark'}}

Possiamo accedere facilmente agli elementi del dizionario usando la chiave del dizionario annidato, come mostrato nell’esempio seguente.

d1 = {
    0: {"Dept": "Mathematics", "Prof": "Dr Jack"},
    1: {"Dept": "Physics", "Prof": "Dr Mark"},
}
print(d1[0]["Dept"])

Produzione:

Mathematics

Qui, 0 è la chiave del dizionario esterno e 'Dept' è la chiave del dizionario interno.

Possiamo anche aggiungere elementi come facciamo in un normale dizionario Python. Inoltre, possiamo anche aggiungere un intero dizionario come elemento. Per esempio:

d1 = {
    0: {"Dept": "Mathematics", "Prof": "Dr Jack"},
    1: {"Dept": "Physics", "Prof": "Dr Mark"},
}
d1[2] = {"Dept": "CS", "Prof": "Dr Jay"}
print(d1[2])

Produzione:

{"Dept": "CS", "Prof": "Dr Jay"}

Python ha un costruttore defaultdict() nel modulo collections per creare dizionari e restituire un valore predefinito quando si accede a una chiave non disponibile.

Il tipo di dati defaultdict() è molto utile quando si desidera restituire valori predefiniti o inizializzare il dizionario secondo le proprie esigenze. Il codice seguente mostra come creare un semplice dizionario con questo metodo:

from collections import defaultdict

d1 = defaultdict(lambda: defaultdict(dict))
d1["key_outer_1"] = {"key_inner_1": "val1"}
d1["key_outer_2"] = {"key_inner_2": "val2"}
print(dict(d1))

Produzione:

{'key_outer_1': {'key_inner_1': 'val1'}, 'key_outer_2': {'key_inner_2': 'val2'}}
Autore: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

Articolo correlato - Python Dictionary