Hoje vocรช sai de "guardar uma lista de coisas" e entra em "organizar dados de verdade". Vamos aprender chave: valor, listas de dicionรกrios e construir um Sistema de Cadastro completo. Bora! ๐
Antes da gente conhecer dicionรกrio, bora dar uma relembrada rรกpida do que
jรก sabemos sobre for e lista. Se errar, sem stress โ clica de novo. ๐
nomes = ["Ana", "Bia", "Caio"], qual o รญndice do "Bia"?for nome in nomes: faz?nomes?Quando vocรช quer ligar pra Mรฃe, vocรช nรฃo procura "o terceiro nรบmero da lista". Vocรช procura pelo nome "Mรฃe" โ e o celular te entrega o nรบmero.
ร isso que um dicionรกrio faz em Python: vocรช guarda uma chave (tipo "Mรฃe") e ela aponta pra um valor (o nรบmero).
Em Python a sintaxe usa chaves { } e dois pontos:
# um dicionรกrio: ficha de um aluno aluno = { "nome": "Kelson", "idade": 33, "curso": "Python", }
Visualmente o aluno รฉ tipo uma ficha cadastral:
A chave (ร esquerda) รฉ como a "etiqueta" da gaveta. O valor (ร direita) รฉ o que tรก guardado lรก dentro. E vocรช acessa pela chave, sem se preocupar com posiรงรฃo/รญndice.
Outras analogias do mundo real:
A gente vai pedir 3 coisas pro usuรกrio e guardar tudo num รบnico dicionรกrio:
# pede os dados nome = input("Nome do aluno: ") idade = int(input("Idade: ")) curso = input("Curso: ") # monta o dicionรกrio aluno = {"nome": nome, "idade": idade, "curso": curso} # mostra a ficha print("Cadastro:", aluno)
nome, idade, curso),
a gente tem UM dicionรกrio sรณ que junta tudo.
Isso vira nossa "ficha do aluno" โ agora o cadastro tรก todo num lugar sรณ.
Pra pegar um valor, vocรช usa colchetes com a chave entre aspas:
aluno = {"nome": "Kelson", "idade": 33, "curso": "Python"}
print(aluno["nome"]) # Kelson
print(aluno["idade"]) # 33
print(f"{aluno['nome']} faz {aluno['curso']}!")
Em lista vocรช acessava por nรบmero: nomes[0].
Em dicionรกrio vocรช acessa por nome da chave: aluno["nome"].
Mais legรญvel, mais "humano". ๐
Aqui tem uma sacada legal: a sintaxe pra atualizar um valor e pra adicionar uma chave nova รฉ a mesma:
aluno = {"nome": "Kelson", "idade": 33, "curso": "Python"}
# ATUALIZAR โ a chave 'idade' jรก existe, entรฃo sรณ sobrescreve
aluno["idade"] = 34
# ADICIONAR โ a chave 'telefone' nรฃo existia, agora existe!
aluno["telefone"] = "99999-1234"
print(aluno)
Visualmente, o dicionรกrio cresce:
Crie um arquivo atualizar_dados_aluno.py. Comece com um dicionรกrio
aluno jรก preenchido (nome, idade, curso).
Mostre o aluno antes da mudanรงa. Depois pergunte ao usuรกrio a
nova idade com input() (lembra de int()!) e
atualize aluno["idade"].
No final, mostre o aluno depois. Bรดnus: adicione uma chave nova
"telefone" tambรฉm โ vocรช sabe como!
# dicionรกrio inicial aluno = {"nome": "Kelson", "idade": 33, "curso": "Python"} print("Antes:", aluno) # pega nova idade e atualiza nova_idade = int(input("Nova idade do aluno: ")) aluno["idade"] = nova_idade # adiciona um campo novo aluno["telefone"] = input("Telefone: ") print("Depois:", aluno)
dicionรกrio[chave] = valor. O Python decide se cria ou atualiza
olhando se a chave jรก existia.
Um aluno รฉ legal. Mas e se a gente tiver uma turma inteira?
A gente coloca vรกrios dicionรกrios dentro de uma lista:
alunos = [] # lista vazia, vai guardar dicts alunos.append({"nome": "Ana", "idade": 22, "curso": "Python"}) alunos.append({"nome": "Bia", "idade": 25, "curso": "Web"}) alunos.append({"nome": "Caio", "idade": 30, "curso": "Dados"}) # percorrer com for: cada item da lista รฉ um dicionรกrio for a in alunos: print(f"{a['nome']} ({a['idade']}) โ {a['curso']}")
Visualmente รฉ uma prateleira de fichas:
Lista + dicionรกrio รฉ a estrutura mais usada do Python na vida real.
Cada item da lista รฉ uma "ficha completa" (dicionรกrio). Vocรช usa o
for pra percorrer e ["chave"] pra ler cada campo.
Pense em uma fila ordenada. Vocรช pega pela posiรงรฃo:
nomes = ["Ana", "Bia", "Caio"]
nomes[0] # "Ana"
nomes[2] # "Caio"
โ Boa quando a ordem importa.
Pense em uma ficha. Vocรช pega pelo nome do campo:
aluno = {"nome": "Ana", "idade": 22}
aluno["nome"] # "Ana"
aluno["idade"] # 22
โ Boa quando o significado importa.
alunos = [aluno1, aluno2, aluno3] โ lista ordenada de fichas.
ร exatamente o que a gente vai usar no Sistema de Cadastro!
Crie um arquivo cadastro_pet.py. Pergunte ao usuรกrio 3 coisas
usando input(): nome do pet, espรฉcie
(cachorro, gato, peixeโฆ) e idade (lembra que tem que int()!).
Monte um dicionรกrio pet com as chaves "nome",
"especie" e "idade". Depois mostre uma frase
tipo: "Rex รฉ um(a) cachorro de 5 anos." usando f-string.
Bem parecido com o cadastro_dicionario.py que a gente fez juntos โ sรณ muda o tema. Vocรช consegue!
# pede os dados do pet nome = input("Nome do pet: ") especie = input("Espรฉcie (cachorro, gato, peixe...): ") idade = int(input("Idade: ")) # monta o dicionรกrio pet = {"nome": nome, "especie": especie, "idade": idade} print(f"{pet['nome']} รฉ um(a) {pet['especie']} de {pet['idade']} anos.")
aluno = {"nome": "Ana"}, como pegar o valor "Ana"?aluno["idade"] = 34 se a chave "idade" jรก existe?
Pediu aluno["telefon"] em vez de aluno["telefone"]?
O Python nรฃo advinha. Ele lanรงa um KeyError e dรก tchau.
aluno = {"nome": "Kelson", "idade": 33}
print(aluno["telefone"]) # ๐ฅ KeyError: 'telefone'
E tem outro clรกssico: confundir { } (dict) com [ ] (lista).
Olha o BugZilla brincando:
# โ ERRADO: usa [ ] querendo dicionรกrio aluno = ["nome": "Ana"] # SyntaxError! # โ CERTO: dict usa { } aluno = {"nome": "Ana"}
"nome" != "Nome" != "nome ".
Python รฉ literal: maiรบscula, minรบscula e espaรงo importam.
.get() quando vocรช nรฃo sabe se a chave existe:
aluno.get("telefone", "nรฃo cadastrado") โ devolve o valor se existir,
ou o segundo argumento se nรฃo existir. Sem erro!
{ } รฉ DICT, [ ] รฉ LISTA.
Vรช os colchetes? Sรฃo primos, mas brigam.
Chegou a hora. Vocรช vai juntar tudo que aprendeu atรฉ aqui:
while, if, for, list, dict,
inputโฆ num programa que faz sentido na vida real.
Vocรช vai construir um menu interativo que cadastra alunos, guarda numa lista de dicionรกrios, lista todos, busca por nome e mostra um total ao sair. Olha como vai ficar:
Crie um arquivo sistema_cadastro.py. Sua "caixa de ferramentas":
alunos = [].while True: pra ficar mostrando o menu atรฉ o usuรกrio
escolher sair (opรงรฃo 0).print() e leia a opรงรฃo com input().if/elif/else pra cada opรงรฃo:
int()) e curso, monte um dict e use
alunos.append({...}).for a in alunos e mostre a["nome"],
a["idade"], a["curso"].for e compare
com a["nome"] == nome_busca.len(alunos)) e use break pra sair.else pra "opรงรฃo invรกlida".ร grandinho, mas vocรช jรก sabe TUDO que precisa. Vai por partes: primeiro faz o menu rodando. Depois adiciona uma opรงรฃo por vez. Pequenas vitรณrias ๐.
# lista que vai guardar todos os cadastros alunos = [] while True: print("\n==== SISTEMA DE CADASTRO ====") print("[1] Adicionar aluno") print("[2] Listar alunos") print("[3] Buscar por nome") print("[0] Sair") opcao = input("Escolha uma opรงรฃo: ") if opcao == "1": nome = input("Nome: ") idade = int(input("Idade: ")) curso = input("Curso: ") alunos.append({"nome": nome, "idade": idade, "curso": curso}) print(f"โ {nome} cadastrado(a) com sucesso!") elif opcao == "2": if len(alunos) == 0: print("Nenhum aluno cadastrado ainda.") else: print("\nโ Lista de alunos โ") for a in alunos: print(f"โข {a['nome']} ({a['idade']}) โ {a['curso']}") elif opcao == "3": nome_busca = input("Nome a buscar: ") encontrou = False for a in alunos: if a["nome"] == nome_busca: print(f"โ {a['nome']} โ {a['idade']} anos โ {a['curso']}") encontrou = True if not encontrou: print(f"โ Nenhum aluno chamado {nome_busca}.") elif opcao == "0": print(f"\n๐ Saindo... Total cadastrado: {len(alunos)} aluno(s).") break else: print("โ Opรงรฃo invรกlida. Tenta de novo!")
Pega o sistema_cadastro.py que vocรช (espero!) acabou de fazer e
adapta pra pets. As chaves agora sรฃo
"nome", "especie" e "idade".
A lista vira pets = [].
Mantรฉm o mesmo menu (adicionar, listar, buscar, sair). Capricha nos textos โ pode pรดr emoji de pet ๐ถ๐ฑ๐ .
Por que esse exercรญcio? Porque praticar a mesma estrutura mudando sรณ os dados รฉ o que fixa de verdade. Quando vocรช sentir que tรก quase no automรกtico, รฉ sinal que aprendeu.
# lista que vai guardar os pets cadastrados ๐พ pets = [] while True: print("\n==== CADASTRO DE PETS ๐พ ====") print("[1] Adicionar pet") print("[2] Listar pets") print("[3] Buscar por nome") print("[0] Sair") opcao = input("Escolha uma opรงรฃo: ") if opcao == "1": nome = input("Nome do pet: ") especie = input("Espรฉcie: ") idade = int(input("Idade: ")) pets.append({"nome": nome, "especie": especie, "idade": idade}) print(f"โ {nome} cadastrado(a)! ๐ถ") elif opcao == "2": if len(pets) == 0: print("Nenhum pet cadastrado ainda.") else: print("\nโ Lista de pets โ") for p in pets: print(f"โข {p['nome']} ({p['especie']}, {p['idade']} anos)") elif opcao == "3": nome_busca = input("Nome a buscar: ") encontrou = False for p in pets: if p["nome"] == nome_busca: print(f"โ {p['nome']} โ {p['especie']} โ {p['idade']} anos") encontrou = True if not encontrou: print(f"โ Nenhum pet chamado {nome_busca}.") elif opcao == "0": print(f"\n๐ Saindo... Total: {len(pets)} pet(s).") break else: print("โ Opรงรฃo invรกlida.")
{"nome": "Ana"}
aluno["nome"] โ colchetes + chave em aspas
aluno["idade"] = 34 โ mesma sintaxe
alunos.append({...})