1
resposta

Não sei se seria bem uma dúvida... Sobre o exercício final

Não entendi muito bem o uso do result = { } Tirei o result que acho que fica mais simples de entender a lógica e deu o mesmo resultado. Na minha cabeça, quando cria o result não está fazendo update e sim append. Porque ele ali não tem nada nele. Alguém poderia me explicar?

Esse é a resposta do exercício:

def km_media(dataset, ano_atual):
    result = {}
    for item in dataset.items():
        media = item[1]['km'] / (ano_atual - item[1]['ano'])
        result.update({ item[0]: media })
    return result

E eu fiz assim:

def km_media(dataset, ano_atual):
    for item in dataset.items():
        media = item[1]['km'] / (ano_atual - item[1]['ano'])
        dataset.update({ item[0]: media })
    return dataset
1 resposta

E aí Luana! Tudo bom?

Na verdade, esse dicionário result é criado para que possamos armazenar os nomes dos carros com suas respectivas quilometragens médias calculadas. Não podemos fazer um append nele porque se trata de um dicionário, então utilizamos o update.

O que está sendo realizado no trecho de código do exercício é basicamente isso. Criamos o dicionário result e depois por meio do laço for passamos por todos os elementos do nosso dataset e calculamos a quilometragem média de cada carro, armazenando esse valor na variável media media = item[1]['km'] / (ano_atual - item[1]['ano']) e em seguida, adicionamos esse valor da media, juntamente com o respectivo nome do carro (item[0]), no dicionário result, por meio da linha result.update({ item[0]: media }).

Realmente o seu código sem o result retorna o mesmo resultado. Apenas um detalhe que os torna um pouco diferente:

Execução do código apresentado no exercício e após a execução da função o dataset está sendo mostrado

Observe que quando executamos o código conforme mostra o exercício, ao visualizarmos o nosso dataset após a execução da função, podemos observar que ele não se altera. O que era o esperado, certo? Uma vez que nossa intenção com a função era apenas calcular as quilometragens médias dos carros, sem alterar nosso dataset original.

No entanto, se executarmos o código conforme você fez:

Perceba que nosso dataset original se altera e agora ele é igual ao dicionário resultante da função. Isso ocorre porque quando você faz o dataset.update({ item[0]: media }) você já está fazendo as alterações diretamente no seu dicionário dataset, perdendo as informações originais.

Sendo assim, caso você fosse precisar utilizar esses dados originais de dataset mais pra frente no seu código, acredito que a utilização do dicionário result seria mais interessante :)

Espero que tenha te ajudado! Se ficar com alguma dúvida me avisa que vamos conversando.

Bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software