Найти - Пользователи
Полная версия: Инициация значений словаря int'овскими значениями
Начало » Python для новичков » Инициация значений словаря int'овскими значениями
1 2
coffe4wolf
Решаю одну из базовых гугловских задачек по питону.
Необходимо посчитать сколько раз каждое слово встречается в тексте.
Набросал вариант, но кое-что не нравится.
 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]))
Как можно по-проще инициировать значения словаря m_dict int'овскими значениями? Сие необходимо, ибо иначе компилятор не даёт инкрементировать значения словаря, т.к. по умолчанию инициируются они None
sander
coffe4wolf
1) dict.fromkeys(, 0)
2) from collection import defaultdict
3) для подсчета
from collections import Counter
marvellik
 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)
coffe4wolf
спасибище всем, перепилил немного
Теперь вопрос - как вывести n ключей словаря?
Я написал вывод через счётчик, но как я понимаю это не предпочтительный метод вывода на питоне
Shaman
 print(m_dict.keys()[:n])
Только порядок там будет неочевидным.
py.user.next
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]
>>>
coffe4wolf
Немного неправильно сформулировал
Нужно вывести n первых отсортированных пар словаря
py.user.next
coffe4wolf
Нужно вывести n первых отсортированных пар словаря
  
>>> d = {1: 2, 3: 4, 5: 6, 0: 0}
>>> 
>>> sorted(d.items())[:2]
[(0, 0), (1, 2)]
>>>
Shaman
py.user.next
Это только во втором питоне сработает.
Точно. Варвары…
coffe4wolf
Нужно вывести n первых отсортированных пар словаря
Отсортированных по какому признаку?
coffe4wolf
Shaman
по значениям ключей. То есть на первом месте слова, которые встречаются в тексте чаще всего
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