iniciante⏱30 minutosLição 8 de 10
Dicionários e Conjuntos
Domine pares chave-valor com dicionários e coleções não ordenadas de elementos únicos com conjuntos
Dicionários e Conjuntos
Dicionários armazenam pares chave-valor para buscas rápidas. Conjuntos armazenam elementos únicos para teste de pertinência e operações matemáticas.
Dicionários (dict)
Dicionários mapeiam chaves para valores:
python
# Criando dicionários
student = {
"name": "Alice",
"age": 22,
"major": "Computer Science",
"gpa": 3.8
}
# Construtor alternativo
student = dict(name="Alice", age=22, major="CS")Acessando Valores
python
print(student["name"]) # "Alice"
print(student.get("age")) # 22
print(student.get("grade", "N/A")) # "N/A" (acesso seguro)Warning
Acessar uma chave inexistente com [] levanta um KeyError. Use .get() para acesso seguro.
Modificando Dicionários
python
student["gpa"] = 3.9 # Atualizar valor
student["year"] = 3 # Adicionar nova chave-valor
del student["age"] # Remover chave
popped = student.pop("major") # Remover e retornarMétodos de Dicionário
python
for key in student:
print(key)
for value in student.values():
print(value)
for key, value in student.items():
print(f"{key}: {value}")
# Verificar existência de chave
if "name" in student:
print("Name exists")Caso de Uso Real: Contador de Palavras
python
text = "the quick brown fox jumps over the lazy dog"
word_count = {}
for word in text.split():
if word in word_count:
word_count[word] += 1
else:
word_count[word] = 1
print(word_count)
# {'the': 2, 'quick': 1, 'brown': 1, ...}Usando defaultdict (mais simples)
python
from collections import defaultdict
word_count = defaultdict(int)
for word in text.split():
word_count[word] += 1Conjuntos (set)
Conjuntos armazenam elementos únicos e não ordenados:
python
# Criando conjuntos
fruits = {"apple", "banana", "cherry", "apple"} # Duplicatas removidas
numbers = set([1, 2, 3, 3, 2, 1]) # {1, 2, 3}
empty = set() # {} cria um dicionário vazio, não conjunto!Operações com Conjuntos
python
a = {1, 2, 3, 4}
b = {3, 4, 5, 6}
print(a | b) # União: {1, 2, 3, 4, 5, 6}
print(a & b) # Interseção: {3, 4}
print(a - b) # Diferença: {1, 2}
print(a ^ b) # Diferença simétrica: {1, 2, 5, 6}Métodos de Conjuntos
python
a.add(7) # Adicionar elemento
a.remove(7) # Remover (levanta KeyError se ausente)
a.discard(10) # Remover (sem erro se ausente)
print(3 in a) # Teste de pertinência (muito rápido!)Note
Conjuntos são otimizados para teste de pertinência (in) — O(1) em média vs O(n) para listas. Use conjuntos quando a ordem não importar e duplicatas não existirem.
Casos de Uso Reais
Visitantes Únicos
python
visitor_ips = set()
visitor_ips.add("192.168.1.1")
visitor_ips.add("192.168.1.2")
visitor_ips.add("192.168.1.1") # Duplicata, ignorada
print(f"Unique visitors: {len(visitor_ips)}")Encontrando Elementos Comuns
python
python_students = {"Alice", "Bob", "Charlie"}
java_students = {"Bob", "Diana", "Eve"}
both = python_students & java_students
print(f"Students in both: {both}")Removendo Duplicatas de uma Lista
python
items = [1, 2, 2, 3, 3, 3, 4]
unique = list(set(items)) # [1, 2, 3, 4]Success
*Python 3.7+ dicionários mantêm ordem de inserção. Conjuntos armazenam valores únicos.
Perguntas de Prática
- Crie um dicionário para um livro com título, autor e ano.
- Como obter um valor de um dicionário com segurança sem risco de KeyError?
- Qual a diferença entre
{}eset()? - Escreva código para contar frequência de caracteres em uma string usando um dicionário.
- Como encontrar elementos únicos entre duas listas usando conjuntos?
- O que
{1, 2, 3} - {2, 3, 4}retorna? - Como percorrer tanto chaves quanto valores de um dicionário?
- Por que testes de pertinência em conjuntos são mais rápidos que em listas?
- Remova duplicatas de
[1, 1, 2, 3, 3, 4, 5, 5]. - O que acontece se você adicionar um elemento duplicado a um conjunto?
Progresso80%