⚖️ Старый подход и современная практика

⚡ Кратко: old-vs-new

Counter подходит для популярных слов.

defaultdict(list) удобно группирует задачи и слова.

Поиск задач по категории можно сделать фильтрацией items().

OrderedDict позволяет менять порядок задач без создания новой очереди.

defaultdict(int) подходит для подсчёта посещений страниц.

global нужен только в задаче со счётчиком вызовов, но в проектах лучше избегать такой зависимости.

LRU-очередь можно моделировать через OrderedDict и move_to_end().

Каждое решение лучше оформлять функцией с понятными параметрами.

Топ-3 ошибки: не нормализовать регистр слов; создавать новую очередь вместо изменения исходной; забыть удалить старые элементы при превышении LRU-лимита.

Учебный/наивный подходСовременный вариантПочему так
Для каждой задачи писать отдельный скрипт без функций.Оформлять каждое решение функцией с параметрами.Так решение проще проверять и переиспользовать.
Сортировать priority queue обычным dict без сохранения намерения.Использовать OrderedDict и явно менять порядок.Источник требует изменить исходную очередь.
Считать популярные слова без lower().Нормализовать регистр перед Counter.This и this должны считаться одним словом.
Проверить по документации: рекомендации по стилю и стандартной библиотеке могут уточняться в новых версиях Python.