Transformador de Dados
Parte da seção Logic & Flow do Journey de Python da Coddy — lição 78 de 78.
Desafio
DifícilCrie uma função chamada transform_dataset que processe uma lista de registros de estudantes para análise.
Cada registro é um dicionário contendo:
student_id: Um identificador único para o estudantegrades: Uma lista de notas numéricassubjects: Uma lista de disciplinas que o estudante está cursando
Sua função deve:
- Calcular a média das notas de cada estudante
- Incluir apenas estudantes que possuem todas as notas acima de 70 (estudantes qualificados) - você deve usar a função
all()do Python para verificar esta condição - Criar um resumo das disciplinas cursadas pelos estudantes qualificados, contando quantos estudantes qualificados cursam cada disciplina
- Retornar um dicionário com duas chaves:
qualified_students: Um dicionário mapeando IDs de estudantes às suas médias de notas (arredondadas para 2 casas decimais)subject_summary: Um dicionário mapeando disciplinas à contagem de estudantes qualificados que cursam essa disciplina
Nota: A função all() no Python retorna True apenas se todos os elementos no iterável forem verdadeiros. Por exemplo, all(grade > 70 for grade in grades) retornará True apenas se cada nota for superior a 70.
Exemplo de Entrada:
[
{
"student_id": "S123",
"grades": [88, 92, 85],
"subjects": ["Math", "Science", "History"]
},
{
"student_id": "S124",
"grades": [65, 95, 80],
"subjects": ["Math", "Science", "English"]
},
{
"student_id": "S125",
"grades": [91, 89, 92],
"subjects": ["Math", "Physics", "History"]
}
]Exemplo de Saída:
{
'qualified_students': {'S123': 88.33, 'S125': 90.67},
'subject_summary': {'Math': 2, 'Science': 1, 'History': 2, 'Physics': 1}
}Experimente você mesmo
def transform_dataset(data):
# Sua solução aqui
# Passo 1: Calcular a média das notas de cada aluno e filtrar alunos qualificados
# (alunos com todas as notas acima de 70)
# Passo 2: Criar um resumo das disciplinas cursadas pelos alunos qualificados
# Passo 3: Retornar o dicionário final com qualified_students e subject_summary
passTodas as lições de Logic & Flow
1Exploração de Variáveis
ConstantesAtribuição de Múltiplas VariáveisTroca de VariáveisVariáveis de Espaço ReservadoArredondar NúmerosCasting de Listas4Aplicativo de Agenda de Contatos
Exibir MenuAdicionar Contato7Conjuntos Parte 2
Operações Matemáticas Parte 1Operações Matemáticas Parte 2Revisão - Caça ao TesouroSubconjuntos e SuperconjuntosIterando sobre ConjuntosRevisão - Rastreador de Torneio10List Comprehensions Básicas
A SintaxeCriando Listas SimplesAdicionando CondiçõesUsando Agregação de DadosRecapitulação - House Of ListsRecapitulação - Elements Of Freedom13Sistema de Gerenciamento de Inventário
Visão Geral do ProjetoAdicionar Item2Dicionários Parte 1
O que é um Dicionário?Criando um DicionárioAcessando ValoresModificando DicionáriosRecapitulação - Gerenciador de Receitas5Tomada de Decisão Avançada
Operador TernárioVerificações de PertencimentoVerificações de IdentidadeErros de IndentaçãoRecapitulação - Filtro de Férias8Gerenciador de Registros de Alunos
Visão Geral do ProjetoAdicionar Aluno11Funções Avançadas
Retornando Múltiplos ValoresFunções Lambda Parte 1Funções Lambda Parte 2Desafio de Recapitulação - Lambda SortFunções Recursivas Parte 1Funções Recursivas Parte 2Recapitulação - Somar Listas Aninhadas14Funções de Ordem Superior
A Função MapA Função FilterRecapitulação - Validador de E-mailRecapitulação - Processador de Números3Dicionários Parte 2
Métodos de DicionárioDicionários AninhadosVerificando ChavesIterando em DicionáriosRecapitulação - Contador de Frequência6Conjuntos Parte 1
O que é um Conjunto?Operações BásicasMétodos de ConjuntosRecapitulação - Remover Duplicatas9Agregação de Dados Avançada
Usando SumEncontrando Mínimo e MáximoOrdenando Dados de Forma EficienteRecapitulação - Dictionary Sorter