0Pricing
Coding Interview Prep · Aula

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 Coding 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 Coding Interview Prep, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Coding 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'))  # True

Conjuntos 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 diff

Teste 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 Coding Interview Prep, atualize para CoddyKit PRO. O curso de Coding 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 Coding 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 Coding Interview Prep?

Nenhuma experiência prévia é necessária. Coding 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 Coding Interview Prep?

Sim. Cada aula de Coding 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

  1. Listas, Tuplas e Fatiamento
  2. Dicionários e Conjuntos em Python
  3. Compreensões e Funções Integradas
  4. Funções, Fechamentos e Lambda
← Voltar para Coding Interview Prep