0Pricing
Python Academy · Aula

defaultdict

Inicialize automaticamente os valores do dicionário

defaultdict é uma aula grátis de Python Academy 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 Python Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Python Academy inclui 4 aulas no total.

O problema das chaves ausentes

Com um dict comum, acessar uma chave inexistente gera KeyError. Isso é incômodo quando você quer construir valores gradualmente.

d = {}
try:
    d['x'].append(1)
except KeyError as e:
    print('KeyError:', e)

Conheça o dicionário com valor padrão

defaultdict de collections recebe uma função de fábrica que produz um valor padrão para qualquer chave ausente. Importe-o com from collections import defaultdict.

from collections import defaultdict
d = defaultdict(int)
print(d['missing'])
print(dict(d))

Contando com valores inteiros

Com defaultdict(int), as chaves ausentes recebem o valor padrão 0, então você pode incrementá-las sem verificá-las primeiro.

from collections import defaultdict
counts = defaultdict(int)
for ch in 'banana':
    counts[ch] += 1
print(dict(counts))

Agrupando com listas

defaultdict(list) cria uma lista vazia para novas chaves, sendo perfeito para agrupar itens em categorias.

from collections import defaultdict
groups = defaultdict(list)
words = ['apple', 'ant', 'bee', 'bear']
for w in words:
    groups[w[0]].append(w)
print(dict(groups))

Coletando com conjuntos

Use defaultdict(set) quando quiser valores únicos por chave. As duplicatas são descartadas automaticamente.

from collections import defaultdict
seen = defaultdict(set)
pairs = [('a', 1), ('a', 1), ('a', 2), ('b', 3)]
for k, v in pairs:
    seen[k].add(v)
print(dict(seen))

A função de fábrica deve ser chamável

O argumento é uma função chamável que não recebe argumentos e retorna o valor padrão. int, list, set e dict funcionam porque chamá-los retorna um valor vazio.

from collections import defaultdict
print(int())
print(list())
print(set())

Padrão personalizado com função anônima

Você pode fornecer qualquer função chamável sem argumentos, como uma lambda, para retornar um valor padrão personalizado.

from collections import defaultdict
scores = defaultdict(lambda: 100)
print(scores['new_player'])
scores['alice'] -= 10
print(dict(scores))

Dicionários com valor padrão aninhados

Uma função de fábrica pode criar um defaultdict, permitindo construir estruturas aninhadas sem configuração manual.

from collections import defaultdict
table = defaultdict(lambda: defaultdict(int))
table['fruit']['apples'] += 3
table['fruit']['pears'] += 2
print(table['fruit']['apples'])
print(table['fruit']['pears'])

Acessar cria a chave

Tenha atenção: simplesmente ler uma chave ausente a insere com o valor padrão. Depois do acesso, a chave existe no dicionário.

from collections import defaultdict
d = defaultdict(int)
_ = d['ghost']
print('ghost' in d)
print(dict(d))

Verificando sem inserir

Para verificar uma chave sem criá-la, use o método .get() ou o operador in, que nunca acionam a função de fábrica.

from collections import defaultdict
d = defaultdict(int)
print(d.get('safe', 'default'))
print('safe' in d)
print(dict(d))

Convertendo novamente em dicionário

Envolva um defaultdict em dict() quando quiser um dicionário comum, por exemplo antes de retorná-lo de uma função ou exibi-lo de forma organizada.

from collections import defaultdict
dd = defaultdict(list)
dd['a'].append(1)
plain = dict(dd)
print(type(plain))
print(plain)

Verificação rápida

O que representa o argumento passado para defaultdict?

Recapitulação: dicionário com valor padrão

Principais pontos:

  • defaultdict(factory) cria valores automaticamente para chaves ausentes.
  • int fornece 0 (contagem), list fornece [] (agrupamento) e set fornece um conjunto vazio (agrupamento de valores únicos).
  • A função de fábrica é qualquer função chamável sem argumentos, incluindo uma lambda.
  • Ler uma chave ausente a insere; use .get() ou in para consultá-la com segurança.
from collections import defaultdict
g = defaultdict(list)
for w in ['cat', 'cow', 'dog']:
    g[w[0]].append(w)
print(dict(g))

Perguntas Frequentes

A aula “defaultdict” é grátis?

Sim — o texto completo de “defaultdict” é 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 Python Academy, atualize para CoddyKit PRO. O curso de Python Academy inclui 4 aulas no total.

O que vou aprender em “defaultdict”?

Inicialize automaticamente os valores do dicionário Você pratica Python Academy 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 Python Academy?

Nenhuma experiência prévia é necessária. Python Academy 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 “defaultdict”?

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 Python Academy?

Sim. Cada aula de Python Academy 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. Counter
  2. defaultdict
  3. deque
  4. namedtuple e OrderedDict
← Voltar para Python Academy