编写一个函数create_dictionary(filename),该函数读取命名的文件并返回从对象名称到出现次数(猜测特定对象的次数)的字典映射。例如,假设文件 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}
除其他事项外,我知道如何计算单词的出现频率。但是,如何如上所述计算每条线路的频率呢?
以下是一些限制条件:
答案 0 :(得分: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})
答案 1 :(得分:0)
根据@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 '。有什么建议吗?