Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 8, 2015 14:59:06

Iris
Зарегистрирован: 2015-12-08
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

задачка на самое частое слово в тексте

Всем здрасьте, помогите, плз, с алгоритмом решения задачки, ну не доходит до меня.
Из текста нужно выбрать наиболее часто встречающееся слово, вывести на экран это слово и количество, которое оно встречается.

Получается я создаю словарь, заношу туда как key слова и как value количество, а вот дальше не могу придумать, как мне выбрать максимальные по value, сравнить их key, чтобы вывести лексикологически первое слово

Офлайн

#2 Дек. 8, 2015 15:02:26

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

задачка на самое частое слово в тексте

Если не можешь решить эту задачу, реши другую
Найти максимальное число из данного списка l не используя стандартную функцию max



Офлайн

#3 Дек. 8, 2015 22:49:57

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

задачка на самое частое слово в тексте

Iris
у словарь есть метод items(), он вернет в зависимости от версии питона объект который либо будет списком либо его надо преобразовать в список, который содержит кортежи вида (key, value) . Далее используя функцию sorted сортируешь с аргументом reverse=True этот список по второму аргументу. Выбираешь первый элемент key которого соответствует слову,а value количеству.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#4 Дек. 9, 2015 01:18:07

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9716
Репутация: +  842  -
Профиль   Отправить e-mail  

задачка на самое частое слово в тексте

JOHN_16
Далее используя функцию sorted сортируешь с аргументом reverse=True этот список по второму аргументу
Да в функцию max() можно передать функцию, берущую значение для сравнения.
>>> d = {'a': 1, 'b': 2, 'c': 3}
>>> max(d.items(), key=lambda i: i[1])[0]
'c'
>>>



Отредактировано py.user.next (Дек. 9, 2015 01:18:28)

Офлайн

#5 Дек. 9, 2015 04:22:37

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

задачка на самое частое слово в тексте

py.user.next
Хорошее и полезное замечание в целом, но такой вариант не очень подойдет, если есть 2 и более слов с одинаковой максимальной частотой упоминания.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#6 Дек. 9, 2015 05:57:10

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9716
Репутация: +  842  -
Профиль   Отправить e-mail  

задачка на самое частое слово в тексте

JOHN_16
если есть 2 и более слов с одинаковой максимальной частотой упоминания
>>> d = {'a': 1, 'b': 2, 'c': 3, 'd': 3, 'e': 3}
>>> n = max(d.values())
>>> out = {k for k in d if d[k] == n}
>>> n, out
(3, {'e', 'd', 'c'})
>>>



Отредактировано py.user.next (Дек. 9, 2015 05:59:43)

Офлайн

#7 Дек. 9, 2015 07:30:55

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

задачка на самое частое слово в тексте

py.user.next
Вот теперь хорошо все)



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#8 Дек. 9, 2015 13:36:12

Iris
Зарегистрирован: 2015-12-08
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

задачка на самое частое слово в тексте

спасииибо

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version