Python ofrece amplio soporte para estructuras de datos, incluyendo herramientas clave para almacenar, acceder y manipular información. En esta guía técnica, exploraremos los diccionarios anidados y sus aplicaciones prácticas.
Diccionarios Anidados
Un diccionario anidado ocurre cuando un diccionario se encuentra como valor dentro de otro diccionario. Esta estructura es particularmente útil para modelar datos jerárquicos y realizar transformaciones entre formatos de datos complejos.
Creación de Diccionarios Anidados
La definición de un diccionario anidado se logra colocando dicccionarios adicionales como valores dentro de un diccionario raíz. El siguiente ejemplo ilustra un diccoinario para gestionar registros académicos:
registros_academicos = {
1001: {'nombre': 'Ana García', 'creditos': 24},
1002: {'nombre': 'Luis Martínez', 'creditos': 23},
1003: {'nombre': 'María López', 'creditos': 22}
}
print(registros_academicos)
print(list(registros_academicos.keys()))
print(list(registros_academicos.values()))
primer_registro = registros_academicos.get(1001)
print(primer_registro)
El acceso a los elementos internos sigue una sintaxis intuitiva usando múltiples claves de acceso.
Técnicas para Agregar Elementos
Existen dievrsas estrategias para construir diccionarios anidados dinámicamente. A continuación se presentan tres métodos comunes:
# Método 1: Asignación directa de subdiccionarios
registro_a = {'nombre': 'Carlos Ruiz', 'promedio': 8.5}
# Método 2: Construcción incremental del subdiccionario
registro_b = {}
registro_b['nombre'] = 'Elena Sánchez'
registro_b['promedio'] = 9.2
# Integración en el diccionario principal
base_datos = {}
base_datos['A001'] = registro_a
base_datos['A002'] = registro_b
# Método 3: Inicialización directa en el diccionario padre
base_datos['A003'] = {}
base_datos['A003']['nombre'] = 'Pedro Fernández'
base_datos['A003']['promedio'] = 7.8
print(base_datos)
El primer enfoque favorece la legibilidad y mantenimiento del código. El segundo ofrece flexibilidad para construcciones condicionales. El tercero permite una integración directa cuando se trabaja con estructuras preexistentes.
Eliminación de Elementos
Para remover datos de diccionarios anidados, se pueden utilizar los métodos del y pop():
coleccion = {
'producto_1': {'precio': 15.99, 'stock': 100},
'producto_2': {'precio': 24.50, 'stock': 75},
'producto_3': {'precio': 8.75, 'stock': 200}
}
del coleccion['producto_1']['stock']
coleccion['producto_2'].pop('precio')
print(coleccion)
print(list(coleccion.keys()))
print(list(coleccion.values()))
Estas operaciones mantienen la integridad de la estructura principal mientras modifican los componentes internos específicos.