我用下面的代码获取的信件频率在文本:如何将累积输出存储在列表中?
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