Trabalhando com Dicionários (Dicts)
Dicionários são estruturas de dados que armazenam informações no formato de chave-valor. Diferente das listas, onde o acesso é feito via índices numéricos que podem mudar de posição, nos dicionários o acesso é feito por uma chave única, garantindo a integridade da consulta independentemente da ordem dos elementos.
Criação de Dicionários
Um dicionário é definido por chaves {} e os pares são separados por vírgulas, enquanto a chave e o valor são separados por dois pontos.
# Dicionário com dados iniciais
produto = {
"id": 101,
"nome": "Teclado Mecânico",
"preco": 250.00
}
print(produto)
print(type(produto))
# Criando dicionários vazios
dic_vazio_1 = {}
dic_vazio_2 = dict()
Operações de Inserção e Modificação
Em Python, a sintaxe para adicionar ou atualizar um elemento é a mesma: dicionario[chave] = valor. Se a chave já existir, o valor é atualizado; caso contrário, um novo par é criado.
cliente = {"nome": "Alice", "status": "Ativo"}
# Adicionando um novo campo
cliente["email"] = "alice@email.com"
# Modificando um campo existente
cliente["status"] = "Inativo"
print(cliente)
# Resultado: {'nome': 'Alice', 'status': 'Inativo', 'email': 'alice@email.com'}
Remoção de Dados
Existem formas distintas de remover dados, dependendo da necessidade de tratar erros ou limpar a estrutura completa.
carro = {"marca": "Ford", "modelo": "Mustang", "ano": 1969}
# Remover um item específico usando del
del carro["ano"]
# Limpar todo o conteúdo do dicionário
carro.clear()
# Deletar o objeto da memória
del carro
Métodos de Consulta e Busca
Para evitar erros do tipo KeyError, o método get() é a forma mais segura de acessar valores.
perfil = {"username": "dev_python", "nivel": 5}
# Acesso direto (pode gerar erro se a chave não existir)
print(perfil["username"])
# Uso do get() com valor padrão opcional
print(perfil.get("pontuacao", 0)) # Retorna 0 se "pontuacao" não existir
Para obter as coleções de chaves, valores ou ambos, utilizamos:
keys(): Retorna todas as chaves.values(): Retorna todos os valores.items(): Retorna pares (tuplas) de chave-valor.
Iteração em Dicionários
Podemos percorrer dicionários de forma eficiente usando loops for e desempacotamento de tuplas.
estoque = {"maca": 10, "banana": 25, "laranja": 15}
# Iterando sobre chaves e valores simultaneamente (Unpacking)
for fruta, quantidade in estoque.items():
print(f"Fruta: {fruta} | Qtd: {quantidade}")
Trabalhando com Conjuntos (Sets)
Conjuntos são coleções não ordenadas de elementos únicos. Eles são ideais para operações matemáticas de conjuntos e para remover duplicatas de uma sequência.
Criação de Conjuntos
Nota importante: Para criar um conjunto vazio, deve-se obrigatoriamente usar set(), pois {} cria um dicionário vazio.
# Conjunto com valores (duplicatas são removidas automaticamente)
numeros = {1, 2, 2, 3, 4, 4, 4}
print(numeros) # Resultado: {1, 2, 3, 4}
# Criando conjunto vazio
meu_set = set()
Adicionando Elementos
Existem dois métodos principais para adição:
add(): Adiciona um único elemento.update(): Adiciona múltiplos elementos de uma sequência (lista, tupla, etc).
cores = {"azul", "verde"}
cores.add("amarelo")
cores.update(["vermelho", "branco", "azul"]) # "azul" não será duplicado
print(cores)
Removendo Elementos
A escolha do método de remoção depende se você deseja que o código lance uma exceção caso o item não exista.
linguagens = {"Python", "Java", "C++", "JS"}
# remove(): Gera KeyError se o item não existir
linguagens.remove("Java")
# discard(): Não gera erro se o item não existir
linguagens.discard("PHP")
# pop(): Remove e retorna um elemento aleatório
item_removido = linguagens.pop()
Verifiacção de Existência
A busca em conjuntos é altamente otimizada em Python através de tabelas hash.
usuarios_premium = {"user1", "user5", "user9"}
print("user1" in usuarios_premium) # True
print("user2" not in usuarios_premium) # True