defaultdict(list) удобно группирует задачи и слова.
Поиск задач по категории можно сделать фильтрацией items().
OrderedDict позволяет менять порядок задач без создания новой очереди.
defaultdict(int) подходит для подсчёта посещений страниц.
global нужен только в задаче со счётчиком вызовов, но в проектах лучше избегать такой зависимости.
LRU-очередь можно моделировать через OrderedDict и move_to_end().
Каждое решение лучше оформлять функцией с понятными параметрами.
Топ-3 ошибки: не нормализовать регистр слов; создавать новую очередь вместо изменения исходной; забыть удалить старые элементы при превышении LRU-лимита.
Учебный/наивный подход
Современный вариант
Почему так
Для каждой задачи писать отдельный скрипт без функций.
Оформлять каждое решение функцией с параметрами.
Так решение проще проверять и переиспользовать.
Сортировать priority queue обычным dict без сохранения намерения.
Использовать OrderedDict и явно менять порядок.
Источник требует изменить исходную очередь.
Считать популярные слова без lower().
Нормализовать регистр перед Counter.
This и this должны считаться одним словом.
Проверить по документации: рекомендации по стилю и стандартной библиотеке могут уточняться в новых версиях Python.