Напишите функцию create_dictionary (имя файла), которая читает именованный файл, и возвращает сопоставление словаря из имен объектов в число совпадений (количество раз, когда определенный объект был угадан). Например, учитывая файл mydata.txt, содержащий следующее:
abacus
calculator
modern computer
abacus
modern computer
large white thing
modern computer
Итак, когда я вхожу в это:
dictionary = create_dictionary('mydata.txt')
for key in dictionary:
print(key + ': ' + str(dictionary[key]))
Функция должна возвращать следующий формат словаря:
{'abacus': 2, 'calculator': 1, 'modern computer': 3, 'large white thing': 1}
Между прочим, я знаю, как считать частоту слов. Но как подсчитать частоту каждой линии, как указано выше?
Вот некоторые ограничения:
Один из простых способов добиться - использовать следующие
Пусть имя файла a.txt
from collections import Counter
s = open('a.txt','r').read().strip()
print(Counter(s.split('\n')))
Выход будет следующим:
Counter({'abacus': 2,
'calculator': 1,
'large white thing': 1,
'modern computer': 3})
print()
отсутствует закрывающая скобка.
В дополнение к тому, что предложил @bigbounty, вот что я мог придумать.
from collections import Counter
def create_dictionary(filename):
"""Blah"""
keys = Counter()
s = open(filename,'r').read().strip()
keys = (Counter(s.split('\n')))
return keys
Итак, если я набираю:
dictionary = create_dictionary('mydata.txt')
for key in dictionary:
print(key + ': ' + str(dictionary[key]))
Я получил:
abacus: 2
calculator: 1
modern computer: 3
large white thing: 1
Но мне нужна помощь: "Как ничего не печатать, если текстовый файл пуст?"
Например: рассмотрим пустой текстовый файл ("nothing.txt"). Ожидаемый результат пуст. Но я не знаю, как опустить значение по умолчанию ' : 1 ' для ключей. Есть рекомендации?
open('a.txt','r').read() == ''
что приводит к true