1
resposta

[Dúvida] Dicionário (update)

Boa noite,

Estou com uma dúvida em um exercício do curso 'Python para Data Science: funções, pacotes e pandas. O objetivo da tarefa é adicionar novos valores em um dicionário a partir da criação de uma função. O dados iniciais são esses:

dados = {
    'Crossfox': {'km': 35000, 'ano': 2005}, 
    'DS5': {'km': 17000, 'ano': 2015}, 
    'Fusca': {'km': 130000, 'ano': 1979}, 
    'Jetta': {'km': 56000, 'ano': 2011}, 
    'Passat': {'km': 62000, 'ano': 1999}
}

A primeira coisa que o exercício pede é encontrar a media de quilometragem e depois colocar esse valor em outra coleção de dados. Dessa forma: 'Crossfox': {'km': 35000, 'ano': 2005, 'km_media': media}. O código é:

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

A dúvida: por que o update é usado duas vezes? Eu não poderia fazer o update diretamente em dataset?

Obrigado!

1 resposta

Oii, Eduardo! Como você está?

É possível, sim, fazer o update diretamente no dataset. Por uma questão de didática, para deixar o código mais completo e para a absorção do conteúdo.

Fazendo diretamente do dataset como sugeriu, ficaria assim:

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

Assim, você está atualizando o dicionário original dataset diretamente. Não há necessidade de criar um novo dicionário result para armazenar os valores atualizados. Esse modelo deixa o código mais enxuto e direito ao ponto, diferente do código da aula que é mais robusto e detalhado.

Segue o notebook de teste usando a sua sugestão: Notebook teste.

Espero ter ajudado. Qualquer dúvida, conte conosco.

Bons estudos, Eduardo!