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

Dicionario dentro de dicionario

https://cursos.alura.com.br/forum/topico-duvida-referente-ao-item-1-245111

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

Questão 1: Seguindo a explicação e o dicionário dados acima, eu posso dizer que dados é um dicionário, que contém alguns outros dicionários dentro dele, correto? Ou seja, {'km': 35000, 'ano': 2005} é um dicionário dentro de dados. Nele, eu tenho a chave 'km' e o valor 35000. E dentro de dados eu tenho a chave 'Crossfox' cujo valor é o proprio dicionário {'km': 35000, 'ano': 2005}, correto?

Questão 2: Quando eu printo o dicionario como a seguir ele me da o retorno do conteudo em tuplas chave-valor:

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

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

Assim, se eu quiser acessar o ano de fabricação dos carros, eu devo fazer

for item in dados.items():
  print(item[1]['ano'])

Pois item[1] equivale a acessar o valor da chave do dicionário dados (por exemplo, a chave Crossfox possui o valor {'km': 35000, 'ano': 2005}, que é um outro dicionário. Então, item[1] acessa {'km': 35000, 'ano': 2005}. Já item[1]['ano'], acessa {'km': 35000, 'ano': 2005} e, uma vez nele, acessa a chave 'ano'. O resultado é o valor correspondente a essa chave,

É assim que funciona?

1 resposta
solução!

Olá, Rogério! Tudo bom? Espero que sim.

Vamos lá!


Questão 1: Seguindo a explicação e o dicionário dados acima, eu posso dizer que dados é um dicionário, que contém alguns outros dicionários dentro dele, correto? Ou seja, {'km': 35000, 'ano': 2005} é um dicionário dentro de dados. Nele, eu tenho a chave 'km' e o valor 35000. E dentro de dados eu tenho a chave 'Crossfox' cujo valor é o proprio dicionário {'km': 35000, 'ano': 2005}, correto?

R: Sim, nós podemos afirmar que dados é um dicionário de dicionários. Também podemos dizer que é uma situação de um dicionário aninhado, e é muito comum no inglês identificar como Nested Dictionary. O dicionário dados possui as chaves, que normalmente são strings e número, com poucas exceções para outros casos. E nesse exemplo, as chaves são os nomes dos modelos de carros. Já os valores são dicionários com informações de cada veículo, mas poderiam ser vários outros tipos de estrutura de dados, nesse quesito os valores são mais flexíveis que as chaves.


Questão 2: Quando eu printo o dicionário como a seguir ele me da o retorno do conteúdo em tuplas chave-valor:

R: Isso, você pode tanto acessar o dicionário através do método items(), que vai te retornar uma lista de tuplas com as chaves e valores de cada dicionário, ou você também pode utilizar as chaves necessárias até chegar no seu dicionário. As duas chamadas abaixo são equivalentes:

dados.items()[1]['ano']
dados['Crossfox']['ano']

Se ainda tiver alguma dúvida, estou por aqui. Ótimos estudos e grande abraço!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!