Практические примеры использования defaultdict
defaultdict
представляет собой универсальную структуру данных, которая может быть использована в различных сценариях. Вот несколько практических примеров использования defaultdict
:
Подсчет количества вхождений
Одним из распространенных применений defaultdict
является подсчет количества вхождений элементов в списке или последовательности. Используя defaultdict
со значением по умолчанию 0
, вы можете легко отслеживать количество каждого элемента.
from collections import defaultdict
## Count the occurrences of words in a sentence
sentence = "the quick brown fox jumps over the lazy dog"
word_count = defaultdict(int)
for word in sentence.split():
word_count[word] += 1
print(dict(word_count))
Вывод:
{'the': 2, 'quick': 1, 'brown': 1, 'fox': 1, 'jumps': 1, 'over': 1, 'lazy': 1, 'dog': 1}
Группировка данных
Другим распространенным применением defaultdict
является группировка данных по ключу. Используя defaultdict
со значением по умолчанию в виде пустого списка или множества, вы можете легко добавлять значения в соответствующий список или множество.
from collections import defaultdict
## Group students by their grades
students = [
{"name": "Alice", "grade": "A"},
{"name": "Bob", "grade": "B"},
{"name": "Charlie", "grade": "A"},
{"name": "David", "grade": "C"},
{"name": "Eve", "grade": "B"}
]
grade_groups = defaultdict(list)
for student in students:
grade_groups[student["grade"]].append(student["name"])
print(dict(grade_groups))
Вывод:
{'A': ['Alice', 'Charlie'], 'B': ['Bob', 'Eve'], 'C': ['David']}
Построение деревьев и вложенных структур
defaultdict
также может быть использован для построения древовидных структур данных или вложенных словарей. Используя defaultdict
со значением по умолчанию в виде другого defaultdict
, вы можете создать иерархическую структуру данных, которую можно легко обойти и манипулировать.
from collections import defaultdict
## Build a nested dictionary
data = defaultdict(lambda: defaultdict(int))
data["fruits"]["apples"] = 5
data["fruits"]["bananas"] = 3
data["vegetables"]["carrots"] = 10
data["vegetables"]["broccoli"] = 7
print(dict(data))
Вывод:
{'fruits': {'apples': 5, 'bananas': 3}, 'vegetables': {'carrots': 10, 'broccoli': 7}}
Это лишь несколько примеров практического использования defaultdict
в Python. Используя его способность предоставлять значения по умолчанию для отсутствующих ключей, вы можете написать более компактный и надежный код, который более элегантно обрабатывает крайние случаи.