Lidando com estruturas de dados aninhadas em Python

Técnicas para trabalhar com hierarquias de dados complexas

Aprenda a gerenciar e manipular estruturas de dados aninhadas em Python, incluindo listas de dicionários, dicionários de listas e objetos profundamente aninhados. Este guia fornece técnicas práticas para acessar, iterar e transformar dados complexos e aninhados.

Programação
Autor
Afiliação
Data de Publicação

9 de fevereiro de 2024

Data de Modificação

29 de abril de 2025

Palavras-chave

Estruturas de dados aninhadas Python, manipulando dados aninhados, Listas aninhadas em Python, Dicionários aninhados Python

Introdução

Em muitas aplicações do mundo real, os dados nem sempre são planos. Em vez disso, muitas vezes vem em formatos aninhados, como listas de dicionários, dicionários contendo listas ou estruturas ainda mais profundamente aninhadas. Lidar com esse tipo de dados complexos pode ser desafiador, mas com as técnicas certas, você pode acessar, iterar e transformar dados aninhados com eficiência. Este tutorial fornece exemplos práticos para ajudá-lo a dominar essas habilidades em Python.



Acessando elementos aninhados

Ao lidar com dados aninhados, o primeiro passo é saber como acessar elementos em vários níveis. Considere um exemplo simples de um dicionário aninhado representando o registro de um aluno:

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

# Acessando valores aninhados:
math_grade = student["grades"]["math"]
first_activity = student["activities"][0]

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

Neste exemplo, acessamos a nota de matemática de um dicionário aninhado e a primeira atividade de uma lista aninhada.

Resultados:

Math Grade: 90
First Activity: basketball

Iterando através de dados aninhados

Muitas vezes, você precisará iterar sobre estruturas aninhadas para extrair ou transformar informações. Por exemplo, considere uma lista de registros de alunos, em que cada registro é um dicionário contendo notas:

#| 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}}
]

# Extraia notas de matemática para todos os alunos
math_grades = [student["grades"]["math"] for student in students]
print("Math Grades:", math_grades)

Esta compreensão de lista itera sobre cada registro de aluno e extrai a nota de matemática, demonstrando uma maneira simples de percorrer dados aninhados.

Resultados:

Math Grades: [90, 75, 88]

Transformando dados aninhados

Às vezes, você pode precisar reestruturar dados aninhados para facilitar o trabalho. Por exemplo, converter um dicionário de listas em uma lista de dicionários pode ser muito útil.

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

# Converta para uma lista de dicionários
flattened_data = [dict(zip(data, t)) for t in zip(*data.values())]
print("Flattened Data:", flattened_data)

Esta transformação usa a função zip e compreensões de dicionário para reformatar a estrutura de dados aninhada em um formato mais utilizável.

Resultados:

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

Combinando várias operações

Em cenários reais, você pode precisar realizar várias operações em dados aninhados. Por exemplo, mesclar dois dicionários e, em seguida, filtrar com base em uma condição:

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

# Mesclar dicionários (os valores de data2 sobrescrevem os de data1 para chaves duplicadas)
merged_data = {**data1, **data2}

# Filtre entradas cuja idade seja inferior a 30
filtered_names = [name for name, age in merged_data.items() if age >= 30]
print("Filtered Names:", filtered_names)

Este exemplo demonstra como mesclar dois dicionários e, em seguida, filtrar chaves com base nos valores associados.

Resultados:

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

Conclusão

Lidar com estruturas de dados aninhadas é uma habilidade crítica em Python, especialmente ao trabalhar com dados complexos do mundo real. Ao aprender como acessar, iterar e transformar dados aninhados, você pode escrever código mais eficiente e legível. Experimente estes exemplos e adapte-os às suas necessidades específicas para dominar a arte de gerenciar hierarquias de dados complexas.

Leitura adicional

Boa programação e aproveite para explorar estruturas de dados complexas e aninhadas em Python!

Explore mais artigos

Nota

Aqui estão mais artigos da mesma categoria para ajudá-lo a se aprofundar no tópico.

placeholder

placeholder
Nenhum item correspondente
De volta ao topo

Reuso

Citação

BibTeX
@online{kassambara2024,
  author = {Kassambara, Alboukadel},
  title = {Lidando com estruturas de dados aninhadas em Python},
  date = {2024-02-09},
  url = {https://www.datanovia.com/pt/learn/programming/python/additional-tutorials/nested-data-structures.html},
  langid = {pt}
}
Por favor, cite este trabalho como:
Kassambara, Alboukadel. 2024. “Lidando com estruturas de dados aninhadas em Python.” February 9, 2024. https://www.datanovia.com/pt/learn/programming/python/additional-tutorials/nested-data-structures.html.