Diccionario anidado en Python

Manav Narula 10 octubre 2023
Diccionario anidado en Python

Un diccionario anidado en Python es un diccionario dentro de otro diccionario, donde los valores del diccionario exterior también son diccionarios. El siguiente código muestra un ejemplo elemental.

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

Producción :

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

Podemos acceder fácilmente a los elementos del diccionario utilizando la clave del diccionario anidado, como se demuestra en el siguiente ejemplo.

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

Producción :

Mathematics

Aquí, 0 es la clave del diccionario externo, y 'Dept' es la clave del diccionario interno.

También podemos añadir elementos como lo hacemos en un diccionario normal de Python. Además, también podemos añadir un diccionario entero como elemento. Por ejemplo:

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

Producción :

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

Python tiene un constructor defaultdict() en el módulo collections para crear diccionarios y devolver un valor por defecto cuando se accede a una clave no disponible.

El tipo de datos defaultdict() es muy útil cuando quieres devolver valores por defecto o inicializar el diccionario según tus necesidades. El siguiente código muestra cómo crear un diccionario simple con este método:

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))

Producción :

{'key_outer_1': {'key_inner_1': 'val1'}, 'key_outer_2': {'key_inner_2': 'val2'}}
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

Artículo relacionado - Python Dictionary