1. 程式人生 > >python 統計句子中的詞頻次數

python 統計句子中的詞頻次數

題目內容:

對於一個已分詞的句子(可方便地擴充套件到統計檔案中的詞頻):

我/是/一個/測試/句子/,/大家/趕快/來/統計/我/吧/,/大家/趕快/來/統計/我/吧/,/大家/趕快/來/統計/我/吧/,/重要/事情/說/三遍/!

可以用collections模組中的Counter()函式方便地統計詞頻,例如可用如下程式碼:


import collections
s = "我/是/一個/測試/句子/,/大家/趕快/來/統計/我/吧/,/大家/趕快/來/統計/我/吧/,/大家/趕快/來/統計/我/吧/,/重要/事情/說/三遍/!/"
s_list = s.split('/') 
[s_list.remove(item) for item in s_list if item in ',。!”“']
collections.Counter(s_list)

這個問題也可以通過字典來解決,請編寫用字典解決本問題的程式,為便於OJ系統自動判斷,程式最後輸出字串中包含的不同詞的個數。

程式參考框架

def countfeq(s):
   ... ...
   return a dict
if __name__ == "__main__":
   s = input()
   ... ...
   s_dict = countfeq(s)
   print(len(s_dict.keys()))

輸入格式:

字串

輸出格式:

整數

輸入樣例(因為oj系統限制,測試用例設為判斷英文單詞個數,請注意英文標點,假設僅包含,和.):

Spring/is/coming/./Spring/is/coming/.

輸出樣例:

3

時間限制:500ms記憶體限制:32000kb
def countfeq(s):
   list=s.split('/')
   [list.remove(item) for item in list if item in ', . ) :']
   dict={}
   for i in list:
       if i in dict:
           dict[i]+=1
       else:
           dict[i]=1
   return dict
if __name__ == "__main__":
   s = input()
   s_dict = countfeq(s)
   print(len(s_dict.keys()))