sul*_*lfc 1 python-2.7 word-frequency
我在python中创建了一个简单的字数统计程序,它读取文本文件,计算字频率并将结果写入另一个文件.问题是当单词重复出现时,程序会写入同一个单词的初始计数和最终计数.例如,如果单词"hello"重复3次,则程序在输出中写入3个hello实例:
字 - 频率计数
你好 - 1
你好 - 2
你好 - 3
代码是:
counts ={}
for w in words:
counts[w] = counts.get(w,0) + 1
outfile.write(w+','+str(counts[w])+'\n')'
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激.我是python中的新手.
解决这个问题的实际方法是使用Counter,如下所示:
>>> from collections import Counter
>>> words = ['b','b','the','the','the','c']
>>> Counter(words).most_common()
[('the', 3), ('b', 2), ('c', 1)]
Run Code Online (Sandbox Code Playgroud)
解决它的另一种方法是使用a defaultdict,它将像Counter上面的例子一样工作:
>>> from collections import defaultdict
>>> d = defaultdict(int)
>>> for word in words:
... d[word] += 1
...
>>> d
defaultdict(<type 'int'>, {'the': 3, 'b': 2, 'c': 1})
Run Code Online (Sandbox Code Playgroud)
无论你如何计算单词,只有在计算完所有单词后才能写入文件; 否则你为每个"计数"写一次,一旦这个词出现不止一次,你的输出就会翻倍.
因此,首先收集计数,然后将它们写出来.