HOWTO · Python

Diccionario anidado en Python

Este tutorial muestra cómo crear y utilizar diccionarios anidados en Python

En esta página

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'}}