Saltar al contenido

¿Qué es collections.defaultdict en Python y cómo se usa? Guía completa con ejemplos

27/04/2025
¿Qué es collections.defaultdict y cómo usarlo?
Compartir:
Índice de Contenido

Introducción a collections.defaultdict en Python

En el ecosistema de Python, trabajar con diccionarios es una tarea común. Sin embargo, a veces necesitamos un diccionario que tenga un valor por defecto para las claves que aún no existen. Aquí es donde entra en juego collections.defaultdict. En este artículo, aprenderás qué es collections.defaultdict, cómo funciona y cómo usarlo con ejemplos prácticos y explicaciones paso a paso.

¿Qué es collections.defaultdict?

El módulo collections de Python ofrece una variedad de estructuras de datos adicionales, y una de las más útiles es defaultdict. Pero, ¿qué es collections.defaultdict y cómo usarlo? Básicamente, defaultdict es una subclase de dict que proporciona un valor por defecto para una clave inexistente, evitando así errores del tipo KeyError.

En un diccionario estándar, si intentas acceder a una clave que no existe, Python lanzará una excepción. Con defaultdict, puedes especificar qué tipo de valor debe tener cualquier clave nueva.

¿Cómo se crea un defaultdict?

Para utilizar defaultdict, primero debes importarlo desde el módulo collections:

from collections import defaultdict

La sintaxis básica para crear un defaultdict es:

mi_diccionario = defaultdict(tipo_por_defecto)

Donde tipo_por_defecto es una función que retorna el valor predeterminado (como int, list, set, etc.).


Ventajas de usar defaultdict

  • Evita errores al acceder a claves inexistentes.
  • Simplifica el código, eliminando la necesidad de comprobar si una clave existe antes de asignar o modificar su valor.
  • Permite inicializaciones automáticas de valores complejos como listas o conjuntos.

Ejemplos prácticos de collections.defaultdict

Ejemplo 1: Contando elementos con int como valor por defecto

Uno de los usos más comunes es contar elementos, por ejemplo, palabras en un texto.


from collections import defaultdict

palabras = [manzana, pera, manzana, naranja, pera, manzana]
contador = defaultdict(int)

for fruta in palabras:
    contador[fruta] += 1

print(contador)
# Salida: defaultdict(<class int>, {manzana: 3, pera: 2, naranja: 1})
    

Aquí, cada vez que una fruta nueva aparece, su valor se inicializa en 0 automáticamente gracias a int.

Ejemplo 2: Agrupar elementos en listas

Puedes utilizar defaultdict para agrupar elementos en listas fácilmente.


from collections import defaultdict

pares = [(a, 1), (b, 2), (a, 3), (b, 4), (c, 5)]
agrupado = defaultdict(list)

for clave, valor in pares:
    agrupado[clave].append(valor)

print(agrupado)
# Salida: defaultdict(<class list>, {a: [1, 3], b: [2, 4], c: [5]})
    
Quizás también te interese:  ¿Qué son las listas y cómo manipularlas? Guía completa para entender y trabajar con listas

En este caso, cada nueva clave se inicializa como una lista vacía, lo que facilita la agrupación.

Ejemplo 3: Uso de set como valor por defecto

Si necesitas evitar duplicados, puedes utilizar set como valor por defecto:


from collections import defaultdict

datos = [(rojo, manzana), (rojo, fresa), (verde, pera), (rojo, manzana)]
colores = defaultdict(set)

for color, fruta in datos:
    colores[color].add(fruta)

print(colores)
# Salida: defaultdict(<class set>, {rojo: {manzana, fresa}, verde: {pera}})
    

Aquí, las frutas repetidas no se agregan dos veces al conjunto.

¿Cómo funciona defaultdict internamente?

Cuando accedes a una clave que no existe en un defaultdict, Python llama automáticamente a la función especificada como valor por defecto para crear el valor inicial. Por ejemplo, si usas list, se llamará a list() y se asignará una nueva lista vacía a esa clave.

Si no se especifica una función de fábrica, se lanzará un error al intentar acceder a una clave inexistente, igual que en un diccionario normal.

Comparación entre dict y defaultdict

dict defaultdict
Da error KeyError si la clave no existe. Asigna automáticamente un valor por defecto a nuevas claves.
Necesita comprobaciones manuales o el método setdefault. No requiere comprobaciones adicionales.
Sintaxis estándar de diccionario. Requiere importar desde collections y especificar una función de fábrica.

Cuándo usar collections.defaultdict

  • Cuando necesitas inicializar automáticamente valores en un diccionario.
  • Al contar elementos o agrupar datos por categorías.
  • Si buscas evitar errores y simplificar tu código al trabajar con diccionarios.

Consideraciones y posibles inconvenientes

Aunque defaultdict es muy útil, también tiene algunas consideraciones:

  • Puede crear claves inesperadamente si accedes a una clave por error, ya que la inicializa automáticamente.
  • No siempre es recomendable si necesitas tener un control estricto sobre las claves existentes.
Quizás también te interese:  ¿Qué son las variables en Python y cómo declararlas? Guía completa para principiantes

Conclusión

Ahora que sabes qué es collections.defaultdict y cómo usarlo, puedes aprovecharlo para escribir código más limpio, eficiente y menos propenso a errores. Utiliza defaultdict siempre que necesites trabajar con diccionarios que requieran valores predeterminados automáticos. ¡Experimenta con los ejemplos y descubre cómo puede facilitarte la vida al programar en Python!

Compartir: