正如标题所说:
到目前为止,这就是我的代码确实可以工作的地方,但是我无法按顺序显示信息。目前它只是随机显示信息。
def frequencies(filename):
infile=open(filename, 'r')
wordcount={}
content = infile.read()
infile.close()
counter = {}
invalid = "‘'`,.?!:;-_\n—' '"
for word in content:
word = content.lower()
for letter in word:
if letter not in invalid:
if letter not in counter:
counter[letter] = content.count(letter)
print('{:8} appears {} times.'.format(letter, counter[letter]))
任何帮助将不胜感激。
字典是无序的数据结构。另外,如果您想计算一组数据中的某些项目,您最好使用collections.Counter()对于这个目标来说,这是更加优化和Python化的。
然后你就可以使用Counter.most_common(N)
为了打印最多N
Counter 对象中的常见项目。
另外关于文件的打开,您可以简单地使用with
自动在块末尾关闭文件的语句。最好不要在函数中打印最终结果,您可以通过生成预期的行然后在需要时打印它们来使函数成为生成器。
from collections import Counter
def frequencies(filename, top_n):
with open(filename) as infile:
content = infile.read()
invalid = "‘'`,.?!:;-_\n—' '"
counter = Counter(filter(lambda x: not invalid.__contains__(x), content))
for letter, count in counter.most_common(top_n):
yield '{:8} appears {} times.'.format(letter, count)
然后使用 for 循环来迭代生成器函数:
for line in frequencies(filename, 100):
print(line)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)