如何知道多少倍串組S,T和N出現在每個下面的話,有一個像這樣的輸出:不同的字母在不同的字詞中出現多少次?
- 描述:第2,T 1,N + 1
- 聲明S 2 ,t 3,n 1
單詞不是事先知道的。我腦海中想到的第一件事是製作字典,但對於字典我們只能有兩個未知數,所以任何提示如何接近它? 在此先感謝。
如何知道多少倍串組S,T和N出現在每個下面的話,有一個像這樣的輸出:不同的字母在不同的字詞中出現多少次?
單詞不是事先知道的。我腦海中想到的第一件事是製作字典,但對於字典我們只能有兩個未知數,所以任何提示如何接近它? 在此先感謝。
from collections import defaultdict
def counter(STRING):
h=defaultdict(int)
for i in STRING:
if i in "stn":
h[i]+=1
return h
for s in ['description','statements']:
k=counter(s)
print k + " for " + s
但是,如何指定例如計數s 2,t 1,n 1是屬於「描述」還是屬於「語句」? – Adia 2010-10-21 11:17:47
請參閱編輯。你可以自己想出來。 – ghostdog74 2010-10-21 11:21:50
謝謝。打印應該是這樣的:print k,「for」,s,否則會給出錯誤:不支持的操作數類型爲+: – Adia 2010-10-21 12:02:33
在Python≥2.7和≥3.1you could use collections.Counter
。
>>> from collections import Counter
>>> Counter("descriptions")
Counter({'i': 2, 's': 2, 'c': 1, 'e': 1, 'd': 1, 'o': 1, 'n': 1, 'p': 1, 'r': 1, 't': 1})
(對於Python≥2.5存在http://code.activestate.com/recipes/576611/的實現。)
反類有一般詞典的界面,讓您可以使用x['n']
得到計數。
>>> print("%s %s, %s %s, %s %s" % ('s', _['s'], 't', _['t'], 'n', _['n']))
s 2, t 1, n 1
您正在使用哪個版本的Python? – kennytm 2010-10-20 09:30:18
請用[家庭作業]標記標記作業。 – 2010-10-20 10:50:46
Python版本2.6.5 – Adia 2010-10-20 11:16:32