Pular para o conteúdo

Como usar defaultdict no Python?

CodeMDD.io

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:

  1. 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:

my_dict = {"a": 1, "b": 2}
try:
value = my_dict["c"]
except KeyError:
value = None
print(value) # Output: None

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.

  1. 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:

my_dict = {"a": 1, "b": 2}
value = my_dict.get("c", None)
print(value) # Output: None

Neste caso, o método get() retorna None quando a chave "c" não existe no dicionário my_dict.

  1. Usando o operador in

Você também pode verificar se uma chave está presente em um dicionário utilizando o operador in. Por exemplo:

my_dict = {"a": 1, "b": 2}
if "c" in my_dict:
value = my_dict["c"]
else:
value = None
print(value) # Output: None

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.

  1. 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:

from collections import defaultdict
my_dict = defaultdict(int)
my_dict["a"] = 1
my_dict["b"] = 2
value = my_dict["c"]
print(value) # Output: 0

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…