我用下面的代碼獲取的信件頻率在文本:如何將累積輸出存儲在列表中?
for s in 'abcdefghijklmnopqrstuvwxyz ':
count = 0
for char in rawpunct.lower():
if s == char:
count +=1
result = s, '%.3f' % (count*100/len(rawpunct.lower()))
f_list.append(result)
,其結果是:
['0.061', '0.012', '0.017', '0.030', '0.093', '0.016', '0.016',
'0.049', '0.050', '0.001', '0.006', '0.034', '0.018', '0.052', '0.055',
'0.013', '0.001', '0.041', '0.050', '0.069', '0.021', '0.007', '0.017',
'0.001', '0.013', '0.000', '0.159']
,但我想存儲的累積頻率,即創建這個列表:
['0.061', '0.073', '0.100', '0.130' ............ ]
任何人都知道該怎麼做?
這不是你問的問題;但是請注意,這可以通讀整個文本27次,只要通過只讀一遍即可獲得相同的結果。簡單地創建一個將字符映射到如下所示的字典:對於'abcdefghijklmnopqrstuvwxyz'中的'counts = {a = 0,b:0 ...',或者等同於'counts = dict((c,0))通過文本一次;對於文本中的每個「c」,執行這個計數[c] + = 1',然後最後可以使用下面描述的方法創建一個新的累積列表 – senderle 2011-12-22 15:53:54
也可用於像這樣操作:['defaultdict'](http://docs.python.org/library/collections.html#collections.defaultdict)和['Counter'](http://docs.python.org/library/collections的.html#collections.Counter)。 – senderle 2011-12-22 15:54:04