我有一个问题的作业问题:
编写一个以a的名字命名的函数print_word_counts(filename) file作为参数并打印按字母顺序排列的所有列表 文档中的单词转换为小写加上它们的出现 计数(这是每个单词出现在文件中的次数)。
我能够在每个单词的出现时得到一个乱序的集合;然而,当我对它进行排序并使其成为新单词时,计数就会消失。
import re
def print_word_counts(filename):
input_file = open(filename, 'r')
source_string = input_file.read().lower()
input_file.close()
words = re.findall('[a-zA-Z]+', source_string)
counts = {}
for word in words:
counts[word] = counts.get(word, 0) + 1
sorted_count = sorted(counts)
print("\n".join(sorted_count))
当我运行此代码时,我得到:
a
aborigines
absence
absolutely
accept
after
等等。
我需要的是:
a: 4
aborigines: 1
absence: 1
absolutely: 1
accept: 1
after: 1
我不确定如何对其进行排序并保留这些值。
答案 0 :(得分:1)
这是一个家庭作业问题,所以我不能给你完整的答案,但这足以让你开始。你的错误在于这一行
sorted_count = sorted(counts)
首先,你无法对字典进行排序。其次,这样做是取字典的键,对它们进行排序,然后返回一个列表。
您可以打印计数值,或者,如果您确实需要按排序顺序排列,请考虑将字典项更改为列表,然后对其进行排序。
lst = list(count.items())
#sort and return lst