Descubra como usar defaultdict em Python
Usando o tipo defaultdict
do Python para lidar com chaves ausentes
Um problema comum que pode surgir ao trabalhar com dicionários em Python é tentar acessar ou modificar chaves que não existem no dicionário. Isso resultará em um KeyError
e interromperá a execução do seu código. Para lidar com esse tipo de situação, a biblioteca padrão fornece o tipo defaultdict
do Python, que é uma classe semelhante a um dicionário e está disponível no módulo collections
.
O tipo defaultdict
do Python se comporta quase exatamente como um dicionário Python comum, mas se você tentar acessar ou modificar uma chave ausente, o defaultdict
criará automaticamente a chave e gerará um valor padrão para ela. Isso torna o defaultdict
uma opção valiosa para lidar com chaves ausentes em dicionários.
Neste tutorial, você aprenderá:
- Como usar o tipo
defaultdict
do Python para lidar com chaves ausentes em um dicionário - Quando e por que usar um
defaultdict
do Python em vez de um dicionário comum - Como usar um
defaultdict
para operações de agrupamento, contagem e acumulação
Com esse conhecimento, você estará em uma melhor condição para usar efetivamente o tipo defaultdict
do Python em seus desafios de programação diários.
Lidando com chaves ausentes em dicionários
Um problema comum que pode surgir ao trabalhar com dicionários Python é como lidar com chaves ausentes. Se o seu código depende muito de dicionários, ou se você está criando dicionários constantemente, em breve perceberá que lidar com exceções frequentes de KeyError
pode ser bastante irritante e adicionar complexidade adicional ao seu código. Com os dicionários Python, você tem pelo menos quatro maneiras disponíveis para lidar com chaves ausentes:
- Usando a estrutura de controle
if
para verificar se a chave existe antes de acessá-la ou modificá-la:
- Usando o método
get()
do dicionário, que retorna um valor padrão se a chave não existir:
- Usando o método
setdefault()
do dicionário, que retorna o valor atual da chave ou define um valor padrão se a chave não existir:
- Usando o tipo
defaultdict
do Python:
Entendendo o tipo defaultdict
do Python
O tipo defaultdict
é uma classe fornecida pelo módulo collections
do Python. Ele funciona de forma semelhante a um dicionário Python, com a diferença de que, quando você tenta acessar uma chave que não existe, o defaultdict
cria automaticamente a chave e vincula a ela um valor padrão. Isso é especialmente útil para evitar exceções de KeyError
ao acessar chaves ausentes.
A principal diferença entre um defaultdict
e um dicionário Python comum é a maneira como eles tratam chaves ausentes. Em um dicionário comum, você receberá um KeyError
ao tentar acessar uma chave que não existe. Já em um defaultdict
, nenhuma exceção KeyError
é lançada e um valor padrão é retornado no lugar.
Usando o tipo defaultdict
do Python
Agora que você já entende como o defaultdict
funciona, vamos ver como usá-lo para diferentes operações com dicionários.
Agrupando itens
Digamos que você tenha uma lista de palavras e queira agrupá-las por sua primeira letra. Você pode usar um defaultdict
para criar um dicionário em que cada chave seja a primeira letra de uma palavra e o valor seja uma lista de palavras com essa mesma primeira letra:
A saída será:
Agrupando itens exclusivos
Se você quiser agrupar apenas as letras únicas das palavras da lista anterior, pode usar um defaultdict
com set
como valor padrão:
A saída será:
Contando itens
Suponha que você tenha uma lista de números repetidos e queira contar quantas vezes cada número aparece. Você pode usar um defaultdict
com um contador como valor padrão:
A saída será:
Acumulando valores
Se você tiver uma lista de números e quiser acumulá-los com base em sua primeira letra, você pode usar um defaultdict
com zero como valor padrão:
A saída será:
Conclusão
Neste tutorial, você aprendeu como usar o tipo defaultdict
do Python para lidar com chaves ausentes em dicionários. Vimos diferentes maneiras de lidar com esse problema e exploramos várias aplicações do defaultdict
para operações de agrupamento, contagem e acumulação.
Usar o defaultdict
pode melhorar a legibilidade e eficiência do seu código, ao evitar exceções KeyError
e fornecer um valor padrão para chaves ausentes.
Agora que você entende como o defaultdict
funciona, experimente aplicá-lo em seus próprios projetos!