O defaultdict é uma classe da Biblioteca Collections em Python que oferece uma maneira conveniente de criar dicionários com um valor padrão para chaves que ainda não foram adicionadas. Isso simplifica a contagem de elementos ou a criação de estruturas de dados onde você precisa inicializar um valor para uma chave antes de usá-la. **Como funciona:** Ao criar um `defaultdict`, você especifica um tipo de dado (como `int`, `list`, `set`, etc.) como argumento. Quando você tenta acessar uma chave que não existe no dicionário, o `defaultdict` automaticamente cria essa chave e atribui a ela o valor padrão correspondente ao tipo especificado. **Exemplo: Contagem de palavras** ```python from collections import defaultdict document = ["the", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog"] word_counts = defaultdict(int) # O valor padrão para novas chaves será 0 (int()) for word in document: word_counts[word] += 1 print(word_counts) # Output: defaultdict(<class 'int'>, {'the': 2, 'quick': 1, 'brown': 1, 'fox': 1, 'jumps': 1, 'over': 1, 'lazy': 1, 'dog': 1}) ``` **Comparação com outras abordagens:** O uso de `defaultdict` torna o código mais conciso e legível em comparação com outras abordagens para inicializar valores em dicionários: **1. Usando `if…else`:** ```python word_counts = {} for word in document: if word in word_counts: word_counts[word] += 1 else: word_counts[word] = 1 ``` **2. Usando `try…except`:** ```python word_counts = {} for word in document: try: word_counts[word] += 1 except KeyError: word_counts[word] = 1 ``` **3. Usando `dict.get()`:** ```python word_counts = {} for word in document: previous_count = word_counts.get(word, 0) word_counts[word] = previous_count + 1 ``` **Outros exemplos:** * **Criando uma lista de valores para cada chave:** ```python from collections import defaultdict data = [("a", 1), ("b", 2), ("a", 3), ("c", 4), ("b", 5)] grouped_data = defaultdict(list) # O valor padrão para novas chaves será uma lista vazia for key, value in data: grouped_data[key].append(value) print(grouped_data) # Output: defaultdict(<class 'list'>, {'a': [1, 3], 'b': [2, 5], 'c': [4]}) ``` * **Criando um conjunto de valores únicos para cada chave:** ```python from collections import defaultdict data = [("a", 1), ("b", 2), ("a", 3), ("c", 4), ("b", 2)] unique_data = defaultdict(set) # O valor padrão para novas chaves será um conjunto vazio for key, value in data: unique_data[key].add(value) print(unique_data) # Output: defaultdict(<class 'set'>, {'a': {1, 3}, 'b': {2}, 'c': {4}}) ``` **Quando usar `defaultdict`?** Use `defaultdict` quando você precisa inicializar automaticamente um valor padrão para novas chaves em um dicionário. Isso é especialmente útil em situações como: * Contagem de elementos * Agrupamento de dados * Criação de estruturas de dados complexas **Referência:** * [Site da Biblioteca Collections](https://docs.python.org/3/library/collections.html)