Pular para o conteúdo

Como usar o DefaultDictionary no 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 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 do Python fornece o tipo defaultdict, uma classe semelhante a um dicionário que está disponível no módulo collections.

O tipo defaultdict do Python se comporta quase exatamente como um dicionário normal do Python, 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.

Como usar o tipo defaultdict do Python para lidar com chaves ausentes em um dicionário

Para usar o tipo defaultdict, você precisará importar o módulo collections. Aqui está um exemplo básico de como usar o defaultdict:

from collections import defaultdict
# Cria um defaultdict vazio com valor padrão 0
my_dict = defaultdict(int)
# Adiciona um valor à chave 'a'
my_dict['a'] = 10
# Acessa a chave 'a' (existe) e a chave 'b' (não existe)
print(my_dict['a']) # Saída: 10
print(my_dict['b']) # Saída: 0 (valor padrão)

Observe que, ao tentar acessar a chave ‘b’, que não existe no dicionário, o defaultdict cria automaticamente a chave e atribui um valor padrão de 0. Isso evita o KeyError que ocorreria se estivéssemos usando um dicionário comum.

Quando e por que usar um defaultdict em vez de um dicionário comum

Agora que você sabe como usar o defaultdict, é importante entender quando e por que usá-lo em vez de um dicionário comum.

A principal vantagem do defaultdict é que ele oferece uma maneira conveniente de lidar com chaves ausentes em um dicionário sem precisar verificar manualmente se a chave existe ou lançar um KeyError. Isso pode simplificar seu código e torná-lo mais legível.

Além disso, o defaultdict permite que você especifique um valor padrão para todas as chaves ausentes do dicionário. Isso pode ser útil em várias situações, como:

  • Contagem de itens: Se você estiver trabalhando com uma lista de elementos e quiser contar quantas vezes cada elemento aparece na lista, o defaultdict pode ser usado para criar um contador automático. O valor padrão pode ser definido como 0 e, em seguida, você pode incrementar o valor toda vez que encontrar um elemento na lista.
from collections import defaultdict
my_list = ['a', 'b', 'a', 'c', 'b', 'a']
counter = defaultdict(int)
for item in my_list:
counter[item] += 1
print(counter) # Saída: defaultdict(<class 'int'>, {'a': 3, 'b': 2, 'c': 1})
  • Acúmulo de valores: Se você quiser agrupar valores com base em uma determinada característica, o defaultdict pode ser útil para acumular os valores para cada característica. O valor padrão pode ser definido como uma lista vazia e, em seguida, você pode adicionar valores a essa lista para cada característica encontrada.
from collections import defaultdict
my_list = [('a', 1), ('b', 2), ('a', 3), ('c', 4), ('b', 5), ('a', 6)]
accumulator = defaultdict(list)
for key, value in my_list:
accumulator[key].append(value)
print(accumulator) # Saída: defaultdict(<class 'list'>, {'a': [1, 3, 6], 'b': [2, 5], 'c': [4]})

Esses são apenas alguns exemplos de como o defaultdict pode ser útil em situações em que você precisa lidar com chaves ausentes em um dicionário.

Conclusão

O tipo defaultdict do Python é uma ferramenta poderosa para lidar com chaves ausentes em dicionários. Ele fornece uma maneira conveniente de lidar com o problema comum de KeyError ao acessar ou modificar chaves ausentes. Além disso, o defaultdict permite que você especifique um valor padrão para todas as chaves ausentes do dicionário, o que pode simplificar seu código e torná-lo mais legível. Experimente o defaultdict em seus projetos Python e veja como ele pode ajudar a melhorar sua experiência de programação.