2017-04-22 38 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