Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 4, 2016 16:42:57

osipbananov
Зарегистрирован: 2016-03-31
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Вывести самое частое слово в тексте

Здравствуйте прохожу курс по 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?

Отредактировано osipbananov (Апрель 4, 2016 16:52:15)

Офлайн

#2 Апрель 4, 2016 16:48:51

ayb
Зарегистрирован: 2014-04-01
Сообщения: 297
Репутация: +  24  -
Профиль   Отправить e-mail  

Вывести самое частое слово в тексте

>>> 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)

Отредактировано ayb (Апрель 4, 2016 16:49:28)

Офлайн

#3 Апрель 4, 2016 16:56:47

osipbananov
Зарегистрирован: 2016-03-31
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Вывести самое частое слово в тексте

Спасибо, а можно как-нибудь без collections? Как- то поставить условие для вывода в моем коде

Отредактировано osipbananov (Апрель 4, 2016 16:58:07)

Офлайн

#4 Апрель 4, 2016 16:56:54

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

Вывести самое частое слово в тексте

ayb - изящно! Но из обучения я так понимаю что надо без колллекций что бы логику отработать



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#5 Апрель 4, 2016 16:58:40

osipbananov
Зарегистрирован: 2016-03-31
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Вывести самое частое слово в тексте

Да именно

Офлайн

#6 Апрель 4, 2016 17:10:34

ayb
Зарегистрирован: 2014-04-01
Сообщения: 297
Репутация: +  24  -
Профиль   Отправить e-mail  

Вывести самое частое слово в тексте

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

>>> import operator
>>> d = {"a": 100, "b": 13, "c": 10000}
>>> d = sorted(d.items(), key=operator.itemgetter(1), reverse=True)
>>> d[0]
('c', 10000)

Офлайн

#7 Апрель 4, 2016 17:15:43

osipbananov
Зарегистрирован: 2016-03-31
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Вывести самое частое слово в тексте

Нет хотелось бы без импорта модулей, но все равно спасибо

Офлайн

#8 Апрель 4, 2016 17:16:22

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

Вывести самое частое слово в тексте

>>> d = {"a": 100, "b": 13, "c": 10000}
>>> 
>>> max(d.items(), key=lambda i: i[1])
('c', 10000)
>>>



Офлайн

#9 Апрель 4, 2016 17:27:08

osipbananov
Зарегистрирован: 2016-03-31
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Вывести самое частое слово в тексте

А как сделать чтобы вывод был без скобок и кавычек, вот так: с 10000?

Офлайн

#10 Апрель 4, 2016 18:01:03

osipbananov
Зарегистрирован: 2016-03-31
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Вывести самое частое слово в тексте

Что никто не знает?

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version