if для подсчёта элементов. Используйте defaultdict.У вас есть список элементов, и вы хотите узнать, сколько раз каждый элемент встречается в списке. Частый шаблон у начинающих выглядит примерно так:
counts = {}
for item in items:
if item in counts:
counts[item] += 1
else:
counts[item] = 1Это работает, но код довольно многословный и поэтому не очень по питонски. Лучший способ — использовать
defaultdict из модуля collections. Вот как будет выглядеть код при использовании этого метода:from collections import defaultdict
counts = defaultdict(int)
for item in items:
counts[item] += 1
defaultdict — это специальный тип словаря из модуля collections в Python. Ключевая идея в том, что он автоматически создаёт значение по умолчанию для ключей, которые ещё не существуют.В этом коде, когда мы пишем:
counts = defaultdict(int)
мы говорим Python, что если ключ отсутствует, нужно создать его и присвоить ему значение по умолчанию, возвращаемое
int(), то есть 0. Это означает, что каждый новый ключ начинается с 0, и к нему добавляется 1, если элемент встречается более одного раза. Никакой инструкции if не требуется.Этот вариант намного лучше: он менее многословный, не требует ручных проверок и поэтому менее подвержен ошибкам.
👉 @PythonPortal
