Manejo de estructuras de datos anidadas en Python

Técnicas para trabajar con jerarquías de datos complejas

Aprenda a gestionar y manipular estructuras de datos anidadas en Python, incluyendo listas de diccionarios, diccionarios de listas y objetos profundamente anidados. Esta guía proporciona técnicas prácticas para acceder, iterar y transformar datos complejos y anidados.

Programación
Autor/a
Afiliación
Fecha de publicación

9 de febrero de 2024

Fecha de modificación

9 de mayo de 2025

Palabras clave

Estructuras de datos anidadas en Python, Manipular datos anidados, Listas anidadas en Python, Diccionarios anidados en Python

Introducción

En muchas aplicaciones del mundo real, los datos no siempre son planos. En cambio, a menudo se presenta en formatos anidados, como listas de diccionarios, diccionarios que contienen listas o incluso estructuras anidadas más profundamente. Manejar este tipo de datos complejos puede ser un reto, pero con las técnicas adecuadas, puede acceder, iterar y transformar datos anidados de manera eficiente. Este tutorial proporciona ejemplos prácticos para ayudarte a dominar estas habilidades en Python.



Acceso a elementos anidados

Cuando se trata de datos anidados, el primer paso es saber cómo acceder a los elementos en varios niveles. Considera un ejemplo sencillo de un diccionario anidado que representa el expediente de un estudiante:

#| label: nested-access
student = {
    "name": "Alice",
    "grades": {
        "math": 90,
        "science": 85,
        "history": 88
    },
    "activities": ["basketball", "chess", "volunteering"]
}

# Acceder a valores anidados:
math_grade = student["grades"]["math"]
first_activity = student["activities"][0]

print("Math Grade:", math_grade)
print("First Activity:", first_activity)

En este ejemplo, accedemos a la nota de matemáticas de un diccionario anidado y a la primera actividad de una lista anidada.

Resultados:

Math Grade: 90
First Activity: basketball

Iteración a través de datos anidados

A menudo, necesitarás iterar sobre estructuras anidadas para extraer o transformar información. Por ejemplo, considere una lista de registros de estudiantes, donde cada registro es un diccionario que contiene calificaciones:

#| label: iterate-nested
students = [
    {"name": "Alice", "grades": {"math": 90, "science": 85}},
    {"name": "Bob", "grades": {"math": 75, "science": 80}},
    {"name": "Charlie", "grades": {"math": 88, "science": 92}}
]

# Extraer las notas de matemáticas de todos los alumnos
math_grades = [student["grades"]["math"] for student in students]
print("Math Grades:", math_grades)

Esta comprensión de listas itera sobre cada registro de estudiante y extrae la nota de matemáticas, lo que demuestra una forma sencilla de recorrer datos anidados.

Resultados:

Math Grades: [90, 75, 88]

Transformar datos anidados

A veces, es posible que tengas que reestructurar datos anidados para facilitar su manejo. Por ejemplo, convertir un diccionario de listas en una lista de diccionarios puede ser muy útil.

#| label: transform-nested
data = {
    "name": ["Alice", "Bob", "Charlie"],
    "age": [25, 30, 35],
    "city": ["New York", "Los Angeles", "Chicago"]
}

# Convertir a una lista de diccionarios
flattened_data = [dict(zip(data, t)) for t in zip(*data.values())]
print("Flattened Data:", flattened_data)

Esta transformación utiliza la función zip y las comprensiones de diccionarios para reformatear la estructura de datos anidados a un formato más usable.

Resultados:

Flattened Data: [
  {'name': 'Alice', 'age': 25, 'city': 'New York'}, 
  {'name': 'Bob', 'age': 30, 'city': 'Los Angeles'}, 
  {'name': 'Charlie', 'age': 35, 'city': 'Chicago'}
  ]

Combinación de varias operaciones

En situaciones reales, es posible que tengas que realizar varias operaciones con datos anidados. Por ejemplo, fusionar dos diccionarios y luego filtrarlos en función de una condición:

#| label: combined-operations
data1 = {"Alice": 25, "Bob": 30}
data2 = {"Charlie": 35, "Bob": 32}

# Fusionar diccionarios (los valores de data2 sobrescriben los de data1 para las claves duplicadas)
merged_data = {**data1, **data2}

# Filtrar las entradas donde la edad sea inferior a 30
filtered_names = [name for name, age in merged_data.items() if age >= 30]
print("Filtered Names:", filtered_names)

Este ejemplo muestra cómo fusionar dos diccionarios y, a continuación, filtrar las claves en función de los valores asociados.

Resultados:

Filtered Names: ['Bob', 'Charlie']

Conclusión

El manejo de estructuras de datos anidadas es una habilidad fundamental en Python, especialmente cuando se trabaja con datos complejos del mundo real. Al aprender a acceder, iterar y transformar datos anidados, podrás escribir código más eficiente y legible. Experimenta con estos ejemplos y adáptalos a tus necesidades específicas para dominar el arte de gestionar jerarquías de datos complejas.

Lecturas adicionales

Feliz programación y disfruta explorando estructuras de datos complejas y anidadas en Python!

Explorar más artículos

Nota

Aquí hay más artículos de la misma categoría para ayudarte a profundizar en el tema.

placeholder

placeholder
No hay resultados
Volver arriba

Reutilización

Cómo citar

BibTeX
@online{kassambara2024,
  author = {Kassambara, Alboukadel},
  title = {Manejo de estructuras de datos anidadas en Python},
  date = {2024-02-09},
  url = {https://www.datanovia.com/es/learn/programming/python/additional-tutorials/nested-data-structures.html},
  langid = {es}
}
Por favor, cita este trabajo como:
Kassambara, Alboukadel. 2024. “Manejo de estructuras de datos anidadas en Python.” February 9, 2024. https://www.datanovia.com/es/learn/programming/python/additional-tutorials/nested-data-structures.html.