Собесов

alexeygrigorev/data-science-interviews: подсчёт элементов

PythonСтруктуры данныхЛёгкаяJunior

Условие

Посчитайте, сколько раз каждый элемент встречается в списке. На выходе — словарь {элемент: количество} или 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 самых частых; пригодится на собеседовании.

Подводные камни

  1. dict.get(key, 0) + 1 против out[key] = out.get(key, 0) + 1 — без присваивания счётчик не обновится; типичная ошибка.
  2. Элементы должны быть хэшируемыми (списки/словари не подойдут).
  3. Counter сравнивает на равенство, поэтому True и 1 будут считаться одним ключом (т.к. True == 1). На реальных данных это может удивить.

Эталонный ответ

Counter(lst) или цикл с out[x] = out.get(x, 0) + 1. Для top-k — Counter(lst).most_common(k).

Хочешь увидеть разбор?

Зарегистрируйся бесплатно — откроется развёрнутое решение этой задачи и ещё 4 на выбор.

Зарегистрироваться и увидеть разбор
Уже есть аккаунт? Войти