Условие
Посчитайте, сколько раз каждый элемент встречается в списке. На выходе — словарь {элемент: количество} или Counter.
Решение
Подход
Идеально — collections.Counter(lst). Если запрещено пользоваться Counter, делаем вручную через dict с .get(key, 0) + 1 или через defaultdict(int).
Реализация
from collections import Counter, defaultdict
def count_via_counter(lst):
return Counter(lst)
def count_manual(lst):
out = {}
for x in lst:
out[x] = out.get(x, 0) + 1
return out
def count_defaultdict(lst):
out = defaultdict(int)
for x in lst:
out[x] += 1
return dict(out)Counter ещё умеет .most_common(k) — top-k самых частых; пригодится на собеседовании.
Подводные камни
dict.get(key, 0) + 1противout[key] = out.get(key, 0) + 1— без присваивания счётчик не обновится; типичная ошибка.- Элементы должны быть хэшируемыми (списки/словари не подойдут).
Counterсравнивает на равенство, поэтомуTrueи1будут считаться одним ключом (т.к.True == 1). На реальных данных это может удивить.
Эталонный ответ
Counter(lst) или цикл с out[x] = out.get(x, 0) + 1. Для top-k — Counter(lst).most_common(k).