Форум сайта python.su
Решаю одну из базовых гугловских задачек по питону.
Необходимо посчитать сколько раз каждое слово встречается в тексте.
Набросал вариант, но кое-что не нравится.
f = open('small.txt') m_list = '' m_dict = {} for line in f: m_list += line.lower() m_list = m_list.replace(' ','\n').split('\n') m_dict = dict.fromkeys(m_list) for name in m_dict: m_dict[name] = 0 for name in m_list: if name in m_dict: m_dict[name] += 1 for name in m_dict: print(str(name) + ' => ' + str(m_dict[name]))
Офлайн
coffe4wolf
1) dict.fromkeys(, 0)
2) from collection import defaultdict
3) для подсчета
from collections import Counter
Офлайн
m_dict = {} with open('small.txt') as file: m_list = [i.lower() for i in file.read().split()] for key in set(m_list): m_dict[key] = str(m_list.count(key)) for key,value in m_dict.items(): print('слов "{}" в тексте - {} '.format(key,value))
with open('small.txt') as file: m_list = [i.lower() for i in file.read().split()] for key in set(m_list): print(key,'=>',m_list.count(key)
Офлайн
спасибище всем, перепилил немного
Теперь вопрос - как вывести n ключей словаря?
Я написал вывод через счётчик, но как я понимаю это не предпочтительный метод вывода на питоне
Отредактировано coffe4wolf (Авг. 25, 2016 11:41:34)
Офлайн
print(m_dict.keys()[:n])
Офлайн
ShamanЭто только во втором питоне сработает.print(m_dict.keys()[:n])
>>> d = {1: 2, 3: 4} >>> d.keys()[:2] Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'dict_keys' object is not subscriptable >>>
>>> d = {1: 2, 3: 4} >>> list(d)[:2] [1, 3] >>>
Офлайн
Немного неправильно сформулировал
Нужно вывести n первых отсортированных пар словаря
Офлайн
coffe4wolf
Нужно вывести n первых отсортированных пар словаря
>>> d = {1: 2, 3: 4, 5: 6, 0: 0} >>> >>> sorted(d.items())[:2] [(0, 0), (1, 2)] >>>
Отредактировано py.user.next (Авг. 25, 2016 12:30:57)
Офлайн
py.user.nextТочно. Варвары…
Это только во втором питоне сработает.
coffe4wolfОтсортированных по какому признаку?
Нужно вывести n первых отсортированных пар словаря
Офлайн
Shaman
по значениям ключей. То есть на первом месте слова, которые встречаются в тексте чаще всего
Офлайн