2014-06-07 107 views
-2

我們必須返回.txt文件中單詞長度的頻率。 例如"My name is Emily"將被轉換爲一個列表:["My", "name", "is", "Emily"],我轉換爲每個字的長度的列表:[2, 4, 2, 5]然後我使用函數計數器,它輸出一個字典,看起來像:在Python中使用計數器函數

Counter({2: 2, 4: 1, 5: 1}) 

但我需要它包括計數爲零:

Counter({1: 0, 2: 2, 3: 0, 4: 1, 5: 1}) 

任何想法? 我應該一起擺脫計數器功能嗎?

+1

應該是什麼,直到您需要的零的最大價值? – thefourtheye

+0

對於丟失的鍵計數器已經返回0。 –

回答

2

Counter只計算項目的頻率,這意味着它保持存在項目的計數。

但是,如果您尋找的項目在Counter對象中不存在,則默認情況下它將返回0

例如,

print Counter()[1] 
# 0 

如果你真的需要用它零計數的項目,那麼你可以創建一個普通的字典了計數器,就像使用計數器這

c = Counter({2: 2, 4: 1, 5: 1}) 
print {num:c[num] for num in xrange(1, max(c) + 1)} 
# {1: 0, 2: 2, 3: 0, 4: 1, 5: 1} 
0

從收集模塊它確實隱含的類:

txt = "My name is Emily" 
d = collections.Counter([len(x) for x in txt.split()]) 

d變量包含信息你沒有1號提到:

Counter({2: 2, 4: 1, 5: 1}) 

d [1]返回0