Como usar a defaultdict do Python
Usando o tipo “defaultdict” do Python para lidar com chaves ausentes
Um problema comum que você pode enfrentar ao trabalhar com dicionários em Python é tentar acessar ou modificar chaves que não existem no dicionário. Isso levanta um KeyError
e interrompe a execução do seu código. Para lidar com esse tipo de situação, a biblioteca padrão do Python oferece o tipo defaultdict
, uma classe semelhante a um dicionário que está disponível para você em collections
.
O tipo defaultdict
se comporta quase exatamente como um dicionário Python regular, mas se você tentar acessar ou modificar uma chave ausente, o defaultdict
automaticamente criará 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 regular. - 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.
Antes de prosseguir, é recomendável que você tenha uma compreensão prévia do que são dicionários em Python e como trabalhar com eles. Se precisar relembrar, consulte os seguintes recursos:
Bônus Gratuito: Clique aqui para obter um Python Cheat Sheet e aprender o básico do Python 3, como trabalhar com tipos de dados, dicionários, listas e funções em Python.
Lidando com Chaves Ausentes em Dicionários
Um problema comum ao trabalhar com dicionários em Python é como lidar com chaves ausentes. Se o seu código é fortemente baseado em dicionários, ou se você está criando dicionários sob demanda o tempo todo, logo perceberá que lidar com exceções frequentes de KeyError
pode ser bastante irritante e adicionar complexidade extra ao seu código. Com os dicionários Python, você tem pelo menos quatro maneiras disponíveis para lidar com chaves ausentes:
-
Usando o método
dict.get()
: O métodoget()
permite que você especifique um valor padrão que será retornado caso a chave não exista no dicionário. Por exemplo: -
Usando o operador de acesso
[]
com tratamento de exceção: Você pode usar um blocotry-except
para lidar com oKeyError
que ocorreria ao acessar uma chave ausente. Por exemplo: -
Usando o método
dict.setdefault()
: O métodosetdefault()
funciona de maneira semelhante ao métodoget()
, mas também define um valor padrão para a chave ausente no dicionário. Por exemplo: -
Usando o tipo
defaultdict
: O tipodefaultdict
permite que você especifique uma função de fábrica para gerar o valor padrão para chaves ausentes. Por exemplo:
Embora todas as abordagens acima sejam úteis, a última opção usando o tipo defaultdict
oferece uma solução mais concisa e elegante para lidar com chaves ausentes em dicionários. Veremos mais sobre o tipo defaultdict
e suas capacidades a seguir.
Entendendo o tipo defaultdict
do Python
O tipo defaultdict
é uma subclasse de dict
disponível no módulo collections
da biblioteca padrão do Python. Ele foi projetado para lidar com chaves ausentes em dicionários de forma mais conveniente, substituindo a necessidade de verificar toda vez se uma chave existe, usando o método get()
ou tratando exceções.
Ao criar um objeto defaultdict
, você precisa especificar uma função de fábrica que será chamada sempre que uma chave ausente for acessada. Essa função de fábrica determina o valor padrão para a chave. A função de fábrica pode ser qualquer função ou uma das opções pré-definidas, como int
, list
, set
, entre outras.
Quando você acessa uma chave que não existe no defaultdict
, a função de fábrica é chamada para criar o valor padrão e associá-lo à chave. Por exemplo: