2017-10-13 19 views
0

我想從一個數據集中創建一個表,該數據集應該給我數據集中的單詞以及它們重複的次數。檢查一個密鑰是否屬於字典,避免再次存儲並增加計數器

因此,例如:

數據集{ moon, moon, moon, sun }

(最終結果):

('moon') ==> 3 
('sun') ==> 1 

我想使用字典,並用鑰匙玩,所以如果在迭代期間找到已經是鍵的單詞,不要將它添加到字典(它應該代表表格),而是增加數字值。

word_table = {} 

for word in document.split(): 
    if word in word_table: 
     word_table[word, somevalue] += 1 
    else: 
     word_table[word, somevalue] = 1 

somevalue是我與單詞一起存儲的輔助鍵。該值可以是。我提到這一點是因爲我不確定這是否會導致問題(或者更好,我想比較的具體密鑰的選擇)。

當我打印整本詞典時,我得到一長串單詞作爲鍵(程序不檢測重複),並在計數器中得到1個單詞。


輸出:

('moon', 'yes') ==> 1 
('moon', 'yes') ==> 1 
('moon', 'yes') ==> 1 
......... 

有,我應該使用這種特殊情況下的任何其他方法或數據結構?或者它只是代碼?

+1

爲'字的條目,somevalue'不是'word'的條目。 word_table中的單詞是檢查「單詞」的條目。 – user2357112

回答

2

你的字典鍵是一個元組很好(儘管在你的文章中它不清楚你爲什麼要點他)。所有你需要做的是確保你是在爲你if語句中檢查爲數組:

word_table = {} 

for word in document.split(): 
    if (word,somevalue) in word_table: 
     word_table[word, somevalue] += 1 
    else: 
     word_table[word, somevalue] = 1 
2

我相信,你所需要的結構是從收藏counter結構。你只需要給它提供你的單詞列表,並且你會得到一個充滿了單詞和數字的字典結構。

4

collections.Counter也可能是你在找什麼:

>>> from collections import Counter 
>>> Counter("moon,moon,moon,sun".split(",")) 
Counter({'moon': 3, 'sun': 1}) 
相關問題