1
resposta

[Sugestão] Hora da Prática - Aula 3 - Questões 10

Olá

Gostaria de compartilhar minha solução, sem usar a lista intermediaria, diferentemente da solução proposta pelo instrutor

funcionarios = [('SP', 16), ('ES', 8), ('MG', 9), ('MG', 6), ('SP', 10), ('MG', 4), ('ES',9), ('ES', 7), ('ES', 12), ('SP', 7), ('SP', 11), ('MG',8), ('ES',8), ('SP',9), ('RJ', 13), ('MG', 5), ('RJ', 9), ('SP', 12), ('MG', 10), ('SP', 7), ('ES', 14), ('SP', 10), ('MG', 12)]

UFs = list(set([tupla[0] for tupla in funcionarios]))

funcionários_por_estado = {UF: [tupla[1] for tupla in funcionarios if tupla[0] == UF] for UF in UFs}
total_funcionários_por_estado = {UF: sum(funcionários_por_estado[UF]) for UF in UFs}

print(f'Dicionário 1 - Listas por estado:\n {funcionários_por_estado}')
print()
print(f'Dicionário 2 - Total por estado:\n {total_funcionários_por_estado}')
1 resposta

Oi, Agostino! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Interessante sua abordagem ao evitar a lista intermediaria e usar compreensoes de lista. Isso mostra um bom dominio de estruturas de dados em Python e uma preocupacao com solucoes mais diretas e elegantes. A forma como voce extraiu as UFs e depois agregou os valores ficou clara e eficiente.

Continue assim!

Uma dica interessante para o futuro e utilizar o metodo get() de dicionarios para acumular valores de forma incremental, evitando percorrer a lista varias vezes. Veja este exemplo:


funcionarios = [('SP', 16), ('ES', 8), ('MG', 9)]

totais = {}

for uf, valor in funcionarios:
    totais[uf] = totais.get(uf, 0) + valor

print(totais)

Esse codigo percorre a lista apenas uma vez e vai somando os valores por estado diretamente no dicionario.

Qualquer dúvida que surgir, compartilhe no fórum. Abraços e bons estudos!

Para saber mais:

Sugestão de conteúdo:

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!