
Passo 1 de 7
Organizar informações em pares de chave e valor
Crie um dicionário de estoque e reconheça como cada chave identifica um valor.
Trilha de aprendizado · Nível 3 · Tutorial 6
Organizar informações por chaves, consultar valores com segurança e percorrer ou atualizar os dados de um dicionário.
Organizar informações em pares de chave e valor
Crie um dicionário de estoque e reconheça como cada chave identifica um valor. 3 min
Consultar pela chave, não pela posição
Recupere valores com colchetes e reconheça quando uma consulta gera KeyError. 2 min
Lidar com chaves que podem não existir
Escolha entre colchetes, get e in para consultar o estoque e decidir o que fazer quando uma chave estiver ausente. 3 min
Adicionar e atualizar associações
Inclua produtos e substitua quantidades por atribuição ou update, acompanhando o estado e a ordem do dicionário. 3 min
Remover associações e recuperar valores
Escolha entre del e pop para excluir uma associação e saiba o que acontece quando a chave não existe. 3 min
Percorrer chaves, valores e pares
Escolha o percurso adequado para listar produtos, quantidades ou ambos e reconheça quais alterações são seguras durante o laço. 4 min
Aplicação final: consultar e atualizar um estoque
Complete um programa no seu computador, escolha as operações de estoque e confira o resultado das suas alterações. 5 min

Passo 1 de 7
Crie um dicionário de estoque e reconheça como cada chave identifica um valor.
Em um estoque de papelaria, podemos associar o nome de cada produto à sua quantidade. Um dicionário organiza essas associações em pares de chave e valor: o produto é a chave; a quantidade é o valor.
Na escrita do dicionário, usamos {} ao redor dos pares, : entre chave e valor e vírgulas entre os pares. Para criar um dicionário vazio, usamos apenas {}.
estoque = {"lápis": 12, "caneta": 8, "borracha": 8}
estoque_vazio = {}
print(estoque)
print(estoque_vazio)
Chaves diferentes podem ter o mesmo valor: caneta e borracha têm quantidade 8.
No exemplo estoque = {"lápis": 12, "caneta": 8, "borracha": 8}, relacione cada trecho ao seu papel.
Toque em um item e depois no par correspondente.
Textos e números podem ser chaves. Nesta papelaria, nomes como "lápis" são úteis; em um estoque organizado por códigos, poderíamos usar 101 como chave. Listas e dicionários não podem ser chaves.
Cada chave aparece apenas uma vez no dicionário resultante. Se você repetir uma chave na criação, prevalece o último valor informado para ela.
Observe o resultado indicado no comentário.
estoque = {"lápis": 12, "caneta": 8, "lápis": 5}
print(estoque)
# {'lápis': 5, 'caneta': 8}Dica
O segundo par com "lápis" substitui o valor 12 por 5; não cria outro produto nem soma 12 + 5. Já {"lápis": 8, "caneta": 8} mantém os dois pares: os valores podem se repetir.
Você quer usar os nomes dos produtos como chaves e registrar 8 lápis, 8 canetas e 3 borrachas. Qual dicionário atende a esse objetivo?

Passo 2 de 7
Recupere valores com colchetes e reconheça quando uma consulta gera KeyError.
Use dicionario[chave] para recuperar o valor associado à chave. Diferentemente de uma sequência, o que vai entre colchetes é a chave, não um índice.
O dicionário preserva a ordem de inserção das associações, mas isso não dá acesso por posição.
estoque = {"caneta": 12, "borracha": 0, "caderno": 5}
print(estoque["caderno"]) # 5![Três associações na ordem de inserção: caneta ligada a 12, borracha ligada a 0 e caderno ligado a 5. A consulta estoque["caderno"] aponta para a chave caderno e depois para o valor 5.](https://cursa-json-routes.s3.amazonaws.com/learning-paths/pt/python/b730454e0225/level-03/tutorial-06/step-02/screen-01/item-03.webp)
A consulta encontra a chave "caderno", independentemente de ela ser a terceira associação.
Considere estoque = {"caneta": 12, "borracha": 0, "caderno": 5}. O que print(estoque["borracha"]) exibe?
Se os produtos forem identificados por códigos numéricos, os números entre colchetes continuam sendo chaves. No exemplo, a chave 0 foi inserida em segundo lugar, mas quantidades[0] busca exatamente essa chave.
quantidades = {10: 8, 0: 3, 20: 5}
print(quantidades[0]) # 3
print(quantidades[10]) # 8Atenção
Nesse mesmo dicionário, quantidades[1] gera KeyError: 1: a chave 1 não existe. Ter três associações não torna 1 uma consulta válida. O erro informa a chave que não foi encontrada.
Para quantidades = {10: 8, 0: 3, 20: 5}, associe cada consulta ao resultado.
Toque em um item e depois no par correspondente.

Passo 3 de 7
Escolha entre colchetes, get e in para consultar o estoque e decidir o que fazer quando uma chave estiver ausente.
Quando a chave pode estar ausente, use get(chave): ele retorna o valor associado ou None, sem gerar KeyError pela ausência.
Com get(chave, padrao), você escolhe a resposta para uma chave ausente. Esse padrão não substitui um valor existente, mesmo que seja zero. A consulta também não adiciona nenhuma chave ao dicionário.
Observe os resultados indicados nos comentários.
estoque = {"caneta": 12, "lapis": 0}
print(estoque.get("caneta")) # 12
print(estoque.get("borracha")) # None
print(estoque.get("borracha", 5)) # 5
print(estoque.get("lapis", 5)) # 0
print(estoque) # {'caneta': 12, 'lapis': 0}
O padrão é uma resposta da consulta, não uma nova associação no estoque.
Considere estoque = {"caderno": 0}.
Executamos, nesta ordem:print(estoque.get("caderno", 8))print(estoque.get("cola"))
Quais são as saídas e o estado do estoque depois das consultas?
Use chave in dicionario quando precisar saber se uma chave existe. O resultado é True ou False e pode orientar um if.
Assim, você distingue um produto cadastrado com quantidade zero de um produto que nem está no estoque.
Neste exemplo, o if entra no primeiro caminho e imprime a quantidade 0.
estoque = {"caneta": 12, "lapis": 0}
print("caneta" in estoque) # True: é uma chave
print(12 in estoque) # False: 12 é um valor, não uma chave
produto = "lapis"
if produto in estoque:
print(f"Quantidade: {estoque[produto]}")
else:
print("Produto não cadastrado")Dica
KeyError.Não use if estoque.get(produto) como teste de cadastro: uma quantidade zero também é avaliada como falsa.
Associe cada situação à expressão mais adequada. Considere que produto guarda o nome procurado.
Toque em um item e depois no par correspondente.

Passo 4 de 7
Inclua produtos e substitua quantidades por atribuição ou update, acompanhando o estado e a ordem do dicionário.
Use estoque[chave] = valor para alterar o dicionário:
A quantidade atribuída substitui a anterior; ela não é somada automaticamente.
estoque = {"caneta": 12, "lapis": 20, "borracha": 0}
estoque["caderno"] = 5
estoque["caneta"] = 9
print(estoque)
# {'caneta': 9, 'lapis': 20, 'borracha': 0, 'caderno': 5}
Atualizar preserva o lugar da chave; incluir acrescenta uma nova associação no final.
Considere cada operação separadamente, sempre começando com estoque = {"caneta": 12, "lapis": 20, "borracha": 0}. Relacione a atribuição ao efeito.
Toque em um item e depois no par correspondente.
estoque.update(outro_dicionario) inclui e atualiza várias associações de uma vez. Quando uma chave já existe, prevalece o valor recebido. Chaves existentes mantêm sua posição; novas chaves entram no final, na ordem em que são fornecidas.
Partindo do resultado das atribuições anteriores:
estoque = {"caneta": 9, "lapis": 20, "borracha": 0, "caderno": 5}
retorno_update = estoque.update({"lapis": 18, "regua": 4})
print(estoque)
# {'caneta': 9, 'lapis': 18, 'borracha': 0, 'caderno': 5, 'regua': 4}
print(retorno_update)
# NoneAtenção
update modifica o dicionário e retorna None, não o dicionário atualizado. Por isso, não escreva estoque = estoque.update(...): depois da alteração, essa atribuição faz a variável estoque guardar None. Para apenas atualizar, use estoque.update(...).
estoque = {"caneta": 12, "lapis": 20, "borracha": 0}
retorno_update = estoque.update({"lapis": 18, "regua": 4})
print(estoque)
print(retorno_update)Sem executar primeiro:
estoque = estoque.update({"lapis": 18, "regua": 4}) seria incorreto para continuar usando estoque como dicionário.Se quiser conferir sua previsão, execute o código no Python do seu computador.
Escreva pelo menos 40 caracteres (0/40).

Passo 5 de 7
Escolha entre del e pop para excluir uma associação e saiba o que acontece quando a chave não existe.
Para retirar um produto do dicionário, remova a associação inteira: chave e valor.
del estoque[chave] quando quiser apenas excluir. Essa instrução não fornece um valor de retorno.estoque.pop(chave) quando quiser excluir e aproveitar o valor removido.estoque = {"lapis": 12, "borracha": 5, "caneta": 8}
del estoque["borracha"]
retiradas = estoque.pop("caneta")
print(retiradas) # 8
print(estoque) # {'lapis': 12}
O retorno de pop é o valor removido, não o dicionário que sobrou.
estoque = {"caderno": 4, "cola": 3}
quantidade = estoque.pop("caderno")
print(quantidade)
print(estoque)Sem executar primeiro, escreva o que cada print exibirá. Depois, se quiser conferir, execute o código no seu Python.
Escreva pelo menos 10 caracteres (0/10).
pop(chave, padrao) remove e retorna o valor se a chave existir. Se ela estiver ausente, retorna o padrão sem alterar o dicionário. Diferentemente de get, pop remove a associação encontrada.
estoque = {"cola": 3}
print(estoque.pop("cola", 0)) # 3: existia e foi removida
print(estoque.pop("tesoura", 0)) # 0: não existia
print(estoque) # {}Atenção
Se a chave não existir, tanto del estoque["tesoura"] quanto estoque.pop("tesoura") geram KeyError. del não aceita um valor padrão. Se precisar usá-lo quando a chave puder faltar, verifique a presença com in antes.
Relacione cada situação à operação mais direta.
Toque em um item e depois no par correspondente.

Passo 6 de 7
Escolha o percurso adequado para listar produtos, quantidades ou ambos e reconheça quais alterações são seguras durante o laço.
Escolha o percurso pelo dado de que você precisa:
for produto in estoque: entrega as chaves.for produto in estoque.keys(): também entrega as chaves, de forma explícita.for quantidade in estoque.values(): entrega os valores.for produto, quantidade in estoque.items(): entrega os pares, desempacotados nas duas variáveis.Todos esses percursos acompanham a ordem de inserção das associações, não a ordem alfabética dos produtos.

Cada linha preserva a ordem: primeiro a associação de caneta, depois a de caderno.
Os dois primeiros laços exibem os mesmos produtos. O terceiro exibe apenas as quantidades.
estoque = {"caneta": 5, "caderno": 2}
for produto in estoque:
print(produto)
# caneta
# caderno
for produto in estoque.keys():
print(produto)
# caneta
# caderno
for quantidade in estoque.values():
print(quantidade)
# 5
# 2Relacione cada tarefa ao percurso mais direto.
Toque em um item e depois no par correspondente.
Com items(), aplique o desempacotamento que você já conhece: em cada passagem, produto recebe a chave e quantidade recebe o valor correspondente. Não é necessário consultar a chave novamente.
estoque = {"caneta": 5, "caderno": 2}
for produto, quantidade in estoque.items():
print(f"{produto}: {quantidade} unidades")
# Saída:
# caneta: 5 unidades
# caderno: 2 unidadesAtenção
Alterar o tamanho do dicionário enquanto ele é percorrido pode causar RuntimeError. Faça inclusões e remoções antes ou depois do laço.
Substituir o valor de uma chave existente não muda o tamanho. Por exemplo, dentro do laço acima, estoque[produto] = quantidade + 1 seria uma atualização permitida: a chave já existe.
Complete a lacuna com as duas variáveis necessárias:
estoque = {"caneta": 5, "caderno": 2}
for ___ in estoque.items():
print(f"{produto}: {quantidade}")
Dentro de for produto in estoque:, é seguro executar del estoque[produto], pois a chave atual já foi lida.

Passo 7 de 7
Complete um programa no seu computador, escolha as operações de estoque e confira o resultado das suas alterações.
No editor do seu computador, crie um arquivo chamado estoque_final.py e copie o código-base abaixo. Ele já é executável, mas ainda não realiza as operações do desafio. Você vai completar o programa usando o que aprendeu.
Use nomes de produtos como chaves textuais e quantidades inteiras como valores. Neste exercício, escreva lapis e regua sem acento.
# Substitua o dicionário vazio pelos dados iniciais.
estoque = {}
print("Estoque inicial:", estoque)
# Escreva aqui suas consultas e alterações.
print("Estoque final:")
# Escreva aqui o percurso que apresenta os pares restantes.caneta com 12, lapis com 20 e borracha com 0, nessa ordem.caneta, que deve existir. Consulte também caderno, usando 0 como resposta caso não esteja cadastrado, sem cadastrá-lo nessa consulta.if para mostrar se borracha está cadastrada, mesmo com quantidade zero.caderno com 5 e substitua a quantidade de caneta por 9.update para definir lapis como 18 e incluir regua com 4. Mantenha estoque como dicionário.caderno do cadastro e mostre a quantidade removida, obtida pela própria operação de remoção.items() e desempacotamento. Mostre uma linha por produto, no formato caneta: 9 unidades.Dica
Escreva e execute sua solução antes de avançar. Faça todas as inclusões e remoções antes do percurso final. Se encontrar um erro, confira a chave usada e se alguma atribuição substituiu o dicionário por um valor de retorno.
Compare estes resultados com o que seu programa mostrou; os rótulos das mensagens podem variar:
caneta: 12.caderno: 0, sem incluir a chave.borracha: está cadastrada, apesar da quantidade 0.caderno: 5.Se algo divergir, confira também a ordem das operações: as consultas vêm antes das alterações.
A ordem abaixo é a de inserção, não a alfabética.
Estoque final:
caneta: 9 unidades
lapis: 18 unidades
borracha: 0 unidades
regua: 4 unidades
Atualizações mantêm a ordem das chaves existentes. A nova chave regua fica no final; caderno já foi removido.
Depois de executar seu programa, relate:
caderno, incluir e substituir quantidades, atualizar em conjunto, remover recuperando o valor e percorrer os pares.caderno era adequada para uma chave ausente e por que borracha foi reconhecida como cadastrada.Se precisou corrigir algo, conte o que mudou. Não é necessário enviar o arquivo.
Escreva pelo menos 100 caracteres (0/100).
Resumo
Em Consultar e atualizar dados com dicionários, você trabalhou com estas decisões:
Parabéns! Você concluiu: Consultar e atualizar dados com dicionários
Milhares de cursos online em vídeo, ebooks e áudiobooks.
Para testar seus conhecimentos no decorrer dos cursos online
Gerado diretamente na galeria de fotos do seu celular e enviado ao seu e-mail
Baixe nosso aplicativo pelo QR Code ou pelos links abaixo:.
+ de 10 milhões
de alunos
Certificado grátis e
válido em todo o Brasil
60 mil exercícios
gratuitos
4,8/5 classificação
nas lojas de apps
Cursos gratuitos em
vídeo, ebooks e audiobooks