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:
= student["grades"]["math"]
math_grade = student["activities"][0]
first_activity
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
= [student["grades"]["math"] for student in students]
math_grades 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
= [dict(zip(data, t)) for t in zip(*data.values())]
flattened_data 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
= {"Alice": 25, "Bob": 30}
data1 = {"Charlie": 35, "Bob": 32}
data2
# Mesclar dicionários (os valores de data2 sobrescrevem os de data1 para chaves duplicadas)
= {**data1, **data2}
merged_data
# Filtre entradas cuja idade seja inferior a 30
= [name for name, age in merged_data.items() if age >= 30]
filtered_names 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
- Guia completo para estruturas de dados Python
- Operações avançadas em estruturas de dados em Python
- Introdução às expressões regulares em Python
Boa programação e aproveite para explorar estruturas de dados complexas e aninhadas em Python!
Explore mais artigos
Aqui estão mais artigos da mesma categoria para ajudá-lo a se aprofundar no tópico.
Reuso
Citação
@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}
}