Найти - Пользователи
Полная версия: Вывести самое частое слово в тексте
Начало » Центр помощи » Вывести самое частое слово в тексте
1 2
osipbananov
Здравствуйте прохожу курс по Python и застрял на одной задаче. Собственно задача:
Напишите программу, которая считывает текст из файла (в файле может быть больше одной строки) и выводит самое частое слово в этом тексте и через пробел то, сколько раз оно встретилось. Если таких слов несколько, вывести лексикографически первое (можно использовать оператор < для строк).
Накидал вот такую программку:
import re
string = "abc a bCd bC AbC BC BCD bcd ABC abc bcd bcd"
string = string.lower()
spisok = re.findall(r'\w+', string)
dic = {}
for i in spisok:
    if i in dic:
        dic[i] += 1
    else:
        dic[i] = 1
for keys, values in dic.items():
    print(keys, values)
print(dic)
На выходе у меня получается вот что:
abc 4
bcd 5
bc 2
a 1
Подскажите как правильно поставить условие вывода, вывести только bcd 5?
ayb
>>> from collections import Counter
>>> s = "abc a bCd bC AbC BC BCD bcd ABC abc bcd bcd"
>>> Counter(s.lower().split(" ")).most_common()[0]
('bcd', 5)
osipbananov
Спасибо, а можно как-нибудь без collections? Как- то поставить условие для вывода в моем коде
ZerG
ayb - изящно! Но из обучения я так понимаю что надо без колллекций что бы логику отработать

osipbananov
Да именно
ayb
Есть такой вариант, но я не уверен подойдет ли такое ТСу:

>>> import operator
>>> d = {"a": 100, "b": 13, "c": 10000}
>>> d = sorted(d.items(), key=operator.itemgetter(1), reverse=True)
>>> d[0]
('c', 10000)
osipbananov
Нет хотелось бы без импорта модулей, но все равно спасибо
py.user.next
>>> d = {"a": 100, "b": 13, "c": 10000}
>>> 
>>> max(d.items(), key=lambda i: i[1])
('c', 10000)
>>>
osipbananov
А как сделать чтобы вывод был без скобок и кавычек, вот так: с 10000?
osipbananov
Что никто не знает?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB