Практические сценарии использования
Подсчет количества вхождений
Одним из распространенных сценариев использования defaultdict
является подсчет количества вхождений элементов в списке или другом итерируемом объекте. Используя defaultdict(int)
, вы можете легко отслеживать количество каждого элемента, не проверяя, существует ли ключ в словаре.
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}
Группировка данных
Еще одно полезное применение defaultdict
- это группировка данных по определенному ключу, где значения хранятся в списках. Это особенно полезно, когда вам нужно организовать данные по определенным критериям.
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'}]}
Вложенные словари
defaultdict
также может быть полезен при работе с вложенными словарями. Используя defaultdict(dict)
, вы можете автоматически создавать новые вложенные словари при обращении к ключу, который не существует.
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}}
Изучив эти практические сценарии использования, вы увидите, как defaultdict
может упростить ваш код на Python и помочь вам более эффективно обрабатывать отсутствующие ключи.