Após executar o código, o retorno de 'result' sai como desejado. Porém, logo em seguida, a variável 'dados' é alterada também, ficando igual ao 'result'. Por quê?
Após executar o código, o retorno de 'result' sai como desejado. Porém, logo em seguida, a variável 'dados' é alterada também, ficando igual ao 'result'. Por quê?
Olá Jonatas.
Vamos olhar cada passo para entender o que está acontecendo:
Primeiro, quando chamamos a função km_media e passamos a variável dados.
km_media(dados, 2019)
Depois, dentro da função recebemos a variável dados com o nome dataset.
def km_media(dataset, ano_atual):
result = {}
for item in dataset.items():
media = item[1]['km'] / (ano_atual - item[1]['ano'])
item[1].update({ 'km_media': media })
result.update({ item[0]: item[1] })
return result
E por fim com a variavel dataset, que é a dados, atualizamos seus campos com método update.
item[1].update({ 'km_media': media })
Nesse momento estamos alterando a dados mesmo ela estando com outro nome.
Agora o porquê da nossa variável result ficar igual a dados é pela linha
result.update({ item[0]: item[1] })
Onde acessamos a chave e o valor do item que pertence ao nosso dicionario dados e incluímos no nosso dicionario result.
Espero ter ajudado, Bons Estudos.
Show de bola. Muuto obrigado