Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Porque o código altera a variável "Dados"

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ê?

2 respostas
solução!

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