Casos de uso prácticos
Contar ocurrencias
Un caso de uso común de defaultdict
es contar las ocurrencias de elementos en una lista u otro iterable. Al utilizar un defaultdict(int)
, puedes realizar un seguimiento fácilmente del recuento de cada elemento sin tener que comprobar si la clave ya existe en el diccionario.
from collections import defaultdict
words = ['apple', 'banana', 'cherry', 'apple', 'banana', 'date']
word_count = defaultdict(int)
for word in words:
word_count[word] += 1
print(dict(word_count))
## Output: {'apple': 2, 'banana': 2, 'cherry': 1, 'date': 1}
Agrupar datos
Otra aplicación útil de defaultdict
es agrupar datos por una cierta clave, donde los valores se almacenan en listas. Esto puede ser especialmente útil cuando necesitas organizar datos en función de algunos criterios.
from collections import defaultdict
data = [
{'name': 'Alice', 'age': 25, 'city': 'New York'},
{'name': 'Bob', 'age': 30, 'city': 'Los Angeles'},
{'name': 'Charlie', 'age': 35, 'city': 'New York'},
{'name': 'David', 'age': 40, 'city': 'Los Angeles'},
]
grouped_data = defaultdict(list)
for item in data:
grouped_data[item['city']].append(item)
print(dict(grouped_data))
## Output: {'New York': [{'name': 'Alice', 'age': 25, 'city': 'New York'}, {'name': 'Charlie', 'age': 35, 'city': 'New York'}],
## 'Los Angeles': [{'name': 'Bob', 'age': 30, 'city': 'Los Angeles'}, {'name': 'David', 'age': 40, 'city': 'Los Angeles'}]}
Diccionarios anidados
defaultdict
también puede ser útil cuando se trabaja con diccionarios anidados. Al utilizar un defaultdict(dict)
, puedes crear automáticamente nuevos diccionarios anidados al acceder a una clave que no existe.
from collections import defaultdict
data = {
'fruit': {
'apple': 2,
'banana': 3,
},
'vegetable': {
'carrot': 5,
'broccoli': 4,
},
}
nested_dd = defaultdict(dict)
for category, items in data.items():
for item, count in items.items():
nested_dd[category][item] = count
print(dict(nested_dd))
## Output: {'fruit': {'apple': 2, 'banana': 3}, 'vegetable': {'carrot': 5, 'broccoli': 4}}
Al explorar estos casos de uso prácticos, puedes ver cómo defaultdict
puede simplificar tu código Python y ayudarte a manejar las claves faltantes de manera más efectiva.