Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Desafio + Dúvida sobre o melhor método

Trabalhei em duas formas diferentes no desafio. Gostaria de uma indicação de qual método é o mais eficiente e 'à prova de falhas'. Se não for nenhum desses poderia mandar um exemplo da aplicação?

cabecalho = ["Nome", "Sexo", "Média"]
nomes = ["Felipe", "Carol", "Victor", "Dieni"]
sexo = ["M", "F", "M", "F"]
medias = [6.5, 8.0, 6.7, 9.2]

#Criar lista de entrada

lista = []

#1. Método WHILE

y = 0

while y < len(nomes):
  
  dados_pessoas = {}

  dados_pessoas[cabecalho[0]] = nomes[y]
  dados_pessoas[cabecalho[1]] = sexo[y]
  dados_pessoas[cabecalho[2]] = medias[y]

  lista.append(dados_pessoas)

  y = y +1

print(lista)
print("\n")

#Método dict(zip())

lista2 = []

for dados_pessoas2 in zip(nomes, sexo, medias):

  dicionario_pessoa = dict(zip(cabecalho, dados_pessoas2))

  lista2.append(dicionario_pessoa)

print(lista2)

Matricule-se agora e aproveite até 50% OFF

O maior desconto do ano para você evoluir com a maior escola de tecnologia

QUERO APROVEITAR
1 resposta
solução!

Ei, Felipe! Tudo bom?

Dos dois métodos que você propôs, o dict(zip()) é o mais eficiente, segue as boas práticas do Python e mais seguro. Ambos são válidos, porém tem algumas caracterísiticas diferentes.

O método WHILE é mais explícito e pode ser mais fácil de entender para quem está começando, pois você controla o loop manualmente. No entanto, é um pouco mais verboso.

Já o dict(zip()), é mais conciso e é geralmente considerado mais "pythônico". Ele utiliza o zip() para combinar as listas e o dict() para criar os dicionários, o que pode ser mais eficiente e menos propenso a erros, já que você não precisa gerenciar manualmente o índice.

Dica: você pode até encurtar ainda mais usando uma List Comprehension:

lista_final = [
    dict(zip(cabecalho, dados)) 
    for dados in zip(nomes, sexo, medias)
]
print(lista_final)

Espero ter ajudado e qualquer dúvida, compartilhe no fórum.

Até mais!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado!