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

para que .items()?

Por que eu preciso usar ".items" na função?

def km_media(dataset, ano_atual):
    for item in dataset.items():
        result = item[1]["km"] / (ano_atual - item[1]["ano"])
        print(result)

Não seria possível fazer somente com "dataset" ainda que modificando um pouco o código subsequente?

1 resposta
solução!

E aí Gabriel! Tudo tranquilo contigo?

O .items() nos permite acessar de maneira mais fácil as chaves e os valores existentes em um dicionário.

Quando pegamos um dicionário e utilizamos o .items() isso irá retornar uma lista contendo pares de tuplas, onde, em cada uma dessas tuplas, o primeiro elemento será a chave do dicionário e o segundo elemento o valor.

Vamos a um exemplo utilizando o dataset desse exercício:

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}
}

dados.items()

Resultado:

dict_items([('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})])

Observe que nos foi retornado uma lista de tuplas, conforme dito anteriormente.

Para vermos de forma mais organizada essas tuplas, vamos utilizar um for:

for item in dados.items():
  print(item)

Resultado:

('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})

Dessa forma, fica fácil acessar os elementos do nosso dicionário. Nesse for, para acessar as chaves do dicionário, por exemplo, basta fazer:

for item in dados.items():
  print(item[0])

Resultado:

Crossfox
DS5
Fusca
Jetta
Passat

E para acessar os valores basta fazer um item[1]. Se desejar algum valor específico, como "ano", você pode acessá-lo rapidamente fazendo item[1]['ano'] e assim por diante.

Sendo assim, se nesse exercício você fizesse o for item in dataset direto, sem o .items() isso dificultaria o acesso a todos os elementos do dicionário. Uma vez que isso nos retornaria apenas as chaves do nosso dicionário:

for item in dados:
  print(item)

Resultado:

Crossfox
DS5
Fusca
Jetta
Passat

E como na função km_media nós fazemos uso tanto das chaves quanto dos valores do dicionário, utilizar o .items() se torna uma opção mais interessante.

Espero ter te ajudado!

Se ficar com alguma dúvida me avisa, tá bom? Vou estar por aqui :)

Bons estudos!