㈠ python統計字元串中單詞數量
使用比較基本的方法寫的參考代碼:
#!/usr/bin/envpython
#-*-coding:utf-8-*-
#python2.7
importre
printu'請輸入字元串:'
wz=raw_input()
s=wz.lower()
#小寫單詞的正則表達式
r='[a-z]+'
#找到所有單詞
ws=re.findall(r,s)
#定義一個字典來存儲單詞和次數
dt={}
forwinws:
dt[w]=dt.setdefault(w,0)+1
#wd來存儲單詞集合,可能有幾個,比如2個單詞,都出現30次
wd=[]
#max用來存儲單詞出現的最多的次數
max=0
forword,timesindt.items():
iftimes>max:
wd=[]
wd.append(word)
max=times
eliftimes==max:
wd.append(word)
printu'有%s個單詞,出現頻率最高:'%len(wd)
forxinwd:
print"%s %s"%(x,max)
測試
請輸入字元串:
!!!
有2個單詞,出現頻率最高:
a2
good2
㈡ 高頻詞問題,請教編程演算法(不一定要編程實現,演算法即可)
以下方法應該是最優了,關注高人的解答。。
1、先過濾不參與統計的符號,如單引號,逗號等
2、通過split分段函數將字元串以空格為界限分割,並將分割出來的每個單詞保存到數組中
3、使用最優排序演算法將單詞進行排序
4、聲明兩個變數str和n,分別用於記錄當前單詞和出現次數
5、開始遍歷,由於已經經過了排序,所以相同的單詞一定是排在一起的,因此,如果下一個單詞和當前相同就將計數加一,否則就和n比較,較大的保留在變數中。
6、遍歷完畢,保留在變數中的,就是頻率就高的單詞!