Dicionários e Conjuntos em Python
Explore a criação de dicionários e conjuntos, testes de pertencimento e padrões comuns, como a contagem de frequências com collections.Counter.
Dicionários e Conjuntos em Python é uma aula grátis de DSA Interview Prep no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de DSA Interview Prep, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de DSA Interview Prep inclui 4 aulas no total.
Dicionários do Python: armazenamentos de chave-valor
Um dicionário do Python associa chaves a valores, com custo médio O(1) para consultas, inserções e exclusões. Ele é a base de problemas de soma de dois valores, verificações de anagramas e contagem de frequências. O código mostra como usá-lo.
d = {'apple': 3, 'banana': 5}
print(d['apple']) # 3
d['cherry'] = 7
print(len(d)) # 3
print('banana' in d) # True
del d['apple']
print(d) # {'banana': 5, 'cherry': 7}Consulta segura com .get()
Ler uma chave ausente com d[key] causa uma falha com KeyError. Use d.get(key, default) para retornar uma alternativa — um hábito seguro que evita erros inesperados durante a execução.
freq = {}
words = ['the', 'cat', 'sat', 'on', 'the', 'mat']
for w in words:
freq[w] = freq.get(w, 0) + 1
print(freq)
# {'the': 2, 'cat': 1, 'sat': 1, 'on': 1, 'mat': 1}
print(freq.get('dog', 0)) # 0 (no KeyError)defaultdict para agrupamentos mais simples
defaultdict(list) cria automaticamente uma lista vazia para cada chave nova, eliminando o código repetitivo dos problemas de agrupamento. defaultdict(int) começa cada chave em 0, facilitando a contagem.
from collections import defaultdict
groups = defaultdict(list)
words = ['eat', 'tea', 'tan', 'ate', 'nat', 'bat']
for w in words:
key = ''.join(sorted(w)) # canonical anagram key
groups[key].append(w)
print(list(groups.values()))
# [['eat','tea','ate'], ['tan','nat'], ['bat']]Counter: mapas de frequência rápidos
Counter é um dicionário criado para contagem: forneça qualquer iterável e obtenha instantaneamente um mapa de frequências. most_common(k) retorna os k itens mais frequentes. O código mostra uma verificação de anagramas.
from collections import Counter
c = Counter('abracadabra')
print(c) # Counter({'a':5,'b':2,'r':2,'c':1,'d':1})
print(c.most_common(2)) # [('a', 5), ('b', 2)]
# Valid anagram check
def is_anagram(s, t):
return Counter(s) == Counter(t)
print(is_anagram('anagram', 'nagaram')) # TrueConjuntos do Python: coleções únicas não ordenadas
Um conjunto armazena itens únicos e oferece testes de pertencimento O(1). Use {1, 2, 3} ou set(iterable) — mas {} cria um dicionário, portanto use set() para obter um conjunto vazio. É ótimo para detectar duplicatas.
seen = set()
nums = [1, 2, 3, 2, 1, 4]
duplicates = []
for n in nums:
if n in seen: # O(1) check
duplicates.append(n)
seen.add(n)
print(duplicates) # [2, 1]
print(len(seen)) # 4 (unique values)Operações com conjuntos em entrevistas
Conjuntos fazem operações matemáticas: | união, & interseção, - diferença e ^ diferença simétrica. Elas resolvem perguntas do tipo "elementos comuns" em uma única linha.
a = {1, 2, 3, 4}
b = {3, 4, 5, 6}
print(a | b) # {1, 2, 3, 4, 5, 6} union
print(a & b) # {3, 4} intersection
print(a - b) # {1, 2} difference
print(a ^ b) # {1, 2, 5, 6} symmetric diffTeste de pertencimento: lista versus conjunto
A estrutura escolhida altera a velocidade. Verificar in em uma lista custa O(n); em um conjunto, O(1). Converter uma lista em conjunto antes de fazer consultas repetidas é uma otimização comum.
word_list = ['apple', 'banana', 'cherry', 'date']
word_set = set(word_list)
# O(n) per check
print('banana' in word_list) # True
# O(1) per check
print('banana' in word_set) # True
# Practical example: find common elements
a = [1, 2, 3, 4, 5]
b = [3, 4, 5, 6, 7]
common = [x for x in a if x in set(b)]
print(common) # [3, 4, 5]Iterando sobre dicionários: chaves, valores e itens
Percorra um dicionário com .keys(), .values() ou .items(). Nunca exclua chaves durante o laço — primeiro reúna-as em uma lista e só depois as exclua. Consulte o código.
scores = {'Alice': 90, 'Bob': 75, 'Carol': 88}
for name, score in scores.items():
print(f'{name}: {score}')
# Find key with max value
best = max(scores, key=scores.get)
print(best) # Alice
# Safe deletion
to_del = [k for k, v in scores.items() if v < 80]
for k in to_del:
del scores[k]
print(scores) # {'Alice': 90, 'Carol': 88}Frozenset: conjuntos hasheáveis
Um frozenset é um conjunto imutável, portanto pode ser uma chave de dicionário ou ficar dentro de outro conjunto. É útil para agrupar anagramas pelo conjunto de letras quando a ordem não importa.
from collections import defaultdict
words = ['eat', 'tea', 'tan', 'ate', 'nat', 'bat']
groups = defaultdict(list)
for w in words:
key = frozenset(w) # hashable; 'eat','tea','ate' all share same key
groups[key].append(w)
print([sorted(g) for g in groups.values()])
# [['ate','eat','tea'], ['nat','tan'], ['bat']]Compreensões de dicionário para transformações
Compreensões de dicionário constroem um mapeamento em uma linha: {k: v for ...}. São ótimas para inverter um dicionário ou filtrar pares. Observe: a inversão pressupõe que os valores sejam únicos. Consulte o código.
# Invert a dict
original = {'a': 1, 'b': 2, 'c': 3}
inverted = {v: k for k, v in original.items()}
print(inverted) # {1:'a', 2:'b', 3:'c'}
# Filter by value
scores = {'Alice': 90, 'Bob': 55, 'Carol': 78}
passing = {k: v for k, v in scores.items() if v >= 60}
print(passing) # {'Alice': 90, 'Carol': 78}Maior sequência consecutiva
Conjuntos resolvem o problema da maior sequência consecutiva em O(n): coloque todos os números em um conjunto e conte a partir de cada número cujo antecessor esteja ausente. Não é necessário ordenar.
def longest_consecutive(nums):
num_set = set(nums)
best = 0
for n in num_set:
if n - 1 not in num_set: # start of sequence
cur = n
streak = 1
while cur + 1 in num_set:
cur += 1
streak += 1
best = max(best, streak)
return best
print(longest_consecutive([100,4,200,1,3,2])) # 4 (1,2,3,4)Verificação rápida
Verificação rápida — veja quanto você reteve das ideias sobre dicionários e conjuntos desta lição. Confie em seus instintos. 🎯
Recapitulação da lição
Recapitulação: dicionários oferecem consultas O(1) para contagem e agrupamento, Counter e defaultdict reduzem o código repetitivo, e os conjuntos transformam varreduras O(n) em verificações O(1).
Perguntas Frequentes
A aula “Dicionários e Conjuntos em Python” é grátis?
Sim — o texto completo de “Dicionários e Conjuntos em Python” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de DSA Interview Prep, atualize para CoddyKit PRO. O curso de DSA Interview Prep inclui 4 aulas no total.
O que vou aprender em “Dicionários e Conjuntos em Python”?
Explore a criação de dicionários e conjuntos, testes de pertencimento e padrões comuns, como a contagem de frequências com collections.Counter. Você pratica DSA Interview Prep com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar DSA Interview Prep?
Nenhuma experiência prévia é necessária. DSA Interview Prep no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.
Quanto tempo leva a aula “Dicionários e Conjuntos em Python”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de DSA Interview Prep?
Sim. Cada aula de DSA Interview Prep inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Listas, Tuplas e Fatiamento
- Dicionários e Conjuntos em Python
- Compreensões e Funções Integradas
- Funções, Fechamentos e Lambda