2017-04-22 35 views
0

我想通过构建一个字典,其中键是单词并且值是出现次数来计算文件'xxxx'中的单词。到目前为止,我得到这个:构建Python字典中的键/值的问题

fil = open("xxxx","r") 
X = fil.read() 

count = {} 
for key in X.split(): 
    count[key] += 1 

for i in count: 
    print (i, count[i]) 

当我跑,我得到:

Traceback (most recent call last): 
    File "countword.py", line 9, in <module> 
    count[key] = count[key] + 1 
KeyError: 'From' 

“从”是文件中的第一个单词,因为没有钥匙“从”到现在为止,我相信是错误的原因。但是,做到这一点的正确方法是什么?在进入for循环之前,我还需要以某种方式初始化该值吗?

+0

使用'collections.defaultdict' –

+0

你遇到一个单词的第一次,该键不存在,所以'算[关键]'失败,看一个defaultdict。 – roganjosh

+0

你的基本问题是你试图添加一个不存在的值。这是'collections.defaultdict'或'dict.get()'都可以解决的问题,但更好的解决方案是使用'collections.Counter()'来为你计数。 –

回答

1

使用Counter

from collections import Counter 

X = "From A to B" 

count = Counter() 
for key in X.split(): 
    count[key] += 1 

count 
# Counter({'A': 1, 'B': 1, 'From': 1, 'to': 1}) 
+0

这有用,谢谢,但我会对没有建立专门方法的解决方案感兴趣。我怎样才能用普通的pythonic字典来做到这一点。 – user2311285

+0

好的,我只是读了它,我意识到,由于新钥匙,这可以通过计数器或默认字典完成。 – user2311285