Dominando Dicionários e Conjuntos em Python: Estruturas de Dados Essenciais

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

Tags: Python dicionários Sets Estruturas de Dados backend

Publicado em 7-24 14:43