Отлично. У нас хранится отображение из строки в количество раз,
в котором мы её встретили. Например, beautiful у нас
встретилось всего один раз, а is встретилось десять раз.
Теперь нам нужно каким-то образом выяснить,
какие слова встречаются чаще всего. Обратите внимание,
как ключи, так и значения в словаре не упорядочены,
поэтому нам нужно сделать так, чтобы они были упорядочены.
Для этого можно воспользоваться, например, методом items
и, например, в zen_items мы можем положить zen_map.items.
Это будет уже список таплов. Обратите внимание, у нас в нашем zen_items
содержится как ключ, так и значение, но уже в виде тапла,
и эту вещь мы уже можем сортировать. Как мы будем это делать?
Если мы попробуем отсортировать zen_items прямо сейчас,
то у нас сортировка произойдёт по первому значению, по beautiful.
Однако, нам нужно сортировать по второму значению наших таплов,
по количеству раз, в котором мы встречали это слово.
Для этого нам поможет замечательный модуль operator и функция sorted.
Воспользуемся функцией sorted и будем сортировать наши zen_items.
Чтобы сортировать по второму значению в нашем тапле,
мы можем в качестве аргумента key передать туда operator.itemgetter
и написать единичку, потому что нас интересует именно первый индекс.
beautiful — это нулевой индекс, единичка — это первый индекс.
Так как нам нужны самые популярные слова, мы используем reverse=True.
Давайте попробуем вывести word_count_items и возьмём
первые три элемента. Отлично, у нас получилось,
что самые популярные слова, это is, better, than,
что мы собственно и ожидали. Однако, как это часто бывает в Python'е,
есть встроенный модуль, который вам поможет решить
эту задачу намного быстрее.
Мы можем импортировать из модуля collections Counter.
В случае, если мы используем Counter, всё, что нам нужно —
это очистить наши слова и передать эти слова в Counter.
Давайте именно это и сделаем. Создадим cleaned_list,
в который в цикле будем добавлять очищенные слова уже знакомым образом,
используя метод split, который разбивает строку
по пробельным символам, и будем добавлять в cleaned_list
с помощью метода append очищенное слово.
Очищенное слово будет получено с помощью метода strip
и приведения к нижнему регистру с помощью метода lower.
Итак, всё, что нам осталось сделать, это вызвать counter с cleaned_list'ом
и обратиться к методу most_common, перадать ему троечку.
Давайте попробуем, что у нас получится. Отлично,
именно то, что мы ожидали, однако, это достигается с помощью трёх строк кода.
Часто в Python'е есть встроенные методы и модули,
которые вам позволяют делать какие-то вещи легко и удобно.
Отлично, мы с вами познакомились со словарями
и решили задачку на их применение.