Pular para o conteúdo

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:

  1. Usando o método dict.get(): O método get() permite que você especifique um valor padrão que será retornado caso a chave não exista no dicionário. Por exemplo:

    my_dict = {'a': 1, 'b': 2}
    value = my_dict.get('c', 0) # Retorna 0 porque 'c' não existe no dicionário
  2. Usando o operador de acesso [] com tratamento de exceção: Você pode usar um bloco try-except para lidar com o KeyError que ocorreria ao acessar uma chave ausente. Por exemplo:

    my_dict = {'a': 1, 'b': 2}
    try:
    value = my_dict['c']
    except KeyError:
    value = 0
  3. Usando o método dict.setdefault(): O método setdefault() funciona de maneira semelhante ao método get(), mas também define um valor padrão para a chave ausente no dicionário. Por exemplo:

    my_dict = {'a': 1, 'b': 2}
    value = my_dict.setdefault('c', 0) # Retorna 0 porque 'c' não existe no dicionário
  4. Usando o tipo defaultdict: O tipo defaultdict permite que você especifique uma função de fábrica para gerar o valor padrão para chaves ausentes. Por exemplo:

    from collections import defaultdict
    my_dict = defaultdict(int) # O valor padrão para chaves ausentes será 0
    value = my_dict['c'] # Retorna 0 porque 'c' não existe no dicionário

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:

from collections import defau
[![](/banner-2.png)](/python/)