给出的问题是我收到了一个带有文字的文件。我必须计算所有单词出现的次数。
到目前为止我尝试过:
def print_words(filename):
input_file = open(filename, 'r')
words = input_file.read().split()
result = {}
for word in words:
if word in result:
result.update({word:1})
else:
result[word] += 1
for count in result:
print(count + ' => ' + str(result[count]))
我得到的错误:
File "wordcount.py", line 50, in print_words
result[word] += 1
KeyError: 'We'
任何帮助都将非常感激。
答案 0 :(得分:4)
当你迭代你的话时:
for word in words:
if word in result:
result.update({word:1})
else:
result[word] += 1
只有当word
已经存在时,才会result
添加update
(if word in result:
)。如果不存在,那么无论如何都要尝试添加一个值,而Python不能这样做,因此KeyError
。
最小修复是:
if
和else
块内的线条;或if word not in result
。或者,您可以使用collections.defaultdict
简化:
from collections import defaultdict
result = defaultdict(int)
for word in words:
result[word] += 1
答案 1 :(得分:1)
目前,您说如果该项目已在字典中,请将其设置为1.但如果该项目不存在,则尝试重新分配该值。这显然是错误的方式。
要解决此问题,请替换:
if word in result:
使用:
if word not in result:
你走了,问题解决了。
答案 2 :(得分:1)
好的,发生的是变量word
包含" We"。你试图在字典中增加计数器,但Python告诉你"我们"不是(还)字典中的一个关键。
这表示您的添加到字典逻辑中存在错误,实际上,只要该字典已经,您只需将该字添加到字典中>在字典中。取代
if word in result:
带
if word not in result:
你将会在途中。