1) вот здесь круто, что посмотрел конструкцию match case. Но можем это все дело упростить.
Смотрите, на лекции я показывал, что функции у нас - это объекты. функции можно засовывать в словари как значения. Что если сразу сделать какой-то словарик-шаблон, в котором ключи будут нашими требуемыми ключами, а значения - функциями, к типам которых нам надо значения преобразовать? int, str и т.п. - это callable объекты, то есть они тоже значениями могут быть
Чтобы шаблон был неизменяемым, можно использовать frozendict (но он устарел уже), на его смену пришел MappingProxyType (Этот тип подсмотрел у вашего коллеги Шульга Михаила). Если будут вопросы - то можно в вопрос-ответ
2) вот здесь можно попроще регулярку: r'\b\w{3,}\b', попробуйте
3) вот здесь можно было сразу весь текст в нижний регистр перевести, тогда не надо было бы здесь итерироваться
4) вот здесь сортировать можно сразу по нескольким параметрам подряд. Для этого нужно внутри key использовать кортеж:
sorted(words_counter.items(), key=lambda word: (-word[1], word[0]))
Это первый вариант, а второй вариант:
return dict(Counter(sorted(words)).most_common(10)) сначала слова отсортировать а потом послать их в Counter. Словари порядок запоминают, в котором к ним данные посылают, соответсвенно most_common уже будет значения отбирать по отсортированным словам
Привет, отлично! Но пару моментов давай поправим?
1) вот здесь круто, что посмотрел конструкцию match case. Но можем это все дело упростить. Смотрите, на лекции я показывал, что функции у нас - это объекты. функции можно засовывать в словари как значения. Что если сразу сделать какой-то словарик-шаблон, в котором ключи будут нашими требуемыми ключами, а значения - функциями, к типам которых нам надо значения преобразовать? int, str и т.п. - это callable объекты, то есть они тоже значениями могут быть Чтобы шаблон был неизменяемым, можно использовать frozendict (но он устарел уже), на его смену пришел MappingProxyType (Этот тип подсмотрел у вашего коллеги Шульга Михаила). Если будут вопросы - то можно в вопрос-ответ
2) вот здесь можно попроще регулярку: r'\b\w{3,}\b', попробуйте
3) вот здесь можно было сразу весь текст в нижний регистр перевести, тогда не надо было бы здесь итерироваться
4) вот здесь сортировать можно сразу по нескольким параметрам подряд. Для этого нужно внутри key использовать кортеж:
sorted(words_counter.items(), key=lambda word: (-word[1], word[0]))
Это первый вариант, а второй вариант: return dict(Counter(sorted(words)).most_common(10)) сначала слова отсортировать а потом послать их в Counter. Словари порядок запоминают, в котором к ним данные посылают, соответсвенно most_common уже будет значения отбирать по отсортированным словам