Como usar defaultdict no Python?
Utilizando o tipo defaultdict do Python para lidar com chaves ausentes
Um problema comum ao trabalhar com dicionários em Python é tentar acessar ou modificar chaves que não existem no dicionário. Isso resulta em um KeyError
e interrompe a execução do 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 disponível no módulo collections
.
O tipo defaultdict
do Python se comporta quase que exatamente como um dicionário Python regular, mas se você tentar acessar ou modificar uma chave inexistente, o defaultdict
criará automaticamente a chave e gerará um valor padrão. 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
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, é bom ter algum conhecimento prévio sobre o que são dicionários em Python e como trabalhar com eles. Se você precisar revisar, confira os seguintes recursos:
Lidando com chaves ausentes em dicionários
Um problema comum ao trabalhar com dicionários em Python é saber como lidar com chaves ausentes. Se o seu código depende bastante de dicionários, ou se você está criando dicionários frequentemente durante a execução do programa, 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 em Python, você tem pelo menos quatro maneiras disponíveis para lidar com chaves ausentes:
- Usando try-except
Você pode utilizar um bloco try-except
para capturar a exceção KeyError
e tratar o caso de chave ausente. Por exemplo:
No exemplo acima, tentamos acessar a chave "c"
. Como esta chave não existe no dicionário my_dict
, a exceção KeyError
é capturada e o valor de value
é definido como None
.
- Usando o método
get()
Outra forma comum de lidar com chaves ausentes é utilizar o método get()
dos dicionários. Esse método retorna o valor associado a uma chave, mas se a chave não existir, retorna um valor padrão especificado. Por exemplo:
Neste caso, o método get()
retorna None
quando a chave "c"
não existe no dicionário my_dict
.
- Usando o operador
in
Você também pode verificar se uma chave está presente em um dicionário utilizando o operador in
. Por exemplo:
Nesse caso, o operador in
verifica se a chave "c"
está presente no dicionário my_dict
. Como essa chave não existe, o valor de value
é definido como None
.
- Usando o tipo
defaultdict
Por fim, a forma mais elegante de lidar com chaves ausentes em dicionários é utilizando o tipo defaultdict
do módulo collections
do Python. Com o defaultdict
, você define uma função default que será chamada sempre que uma chave inexistente for acessada. Essa função retorna o valor padrão desejado. Por exemplo:
Neste exemplo, definimos um defaultdict
chamado my_dict
com o tipo int
. A função int()
retorna o valor padrão 0
. Quando tentamos acessar a chave "c"
, que não existe no dicionário, o defaultdict
automaticamente cria a chave e retorna o valor padrão especificado pela função int()
.
Continua…