字符串到字典的字数统计和显示

String to dictionary word count and display

我有一个家庭作业问题:

Write a function print_word_counts(filename) that takes the name of a file as a parameter and prints an alphabetically ordered list of all words in the document converted to lower case plus their occurrence counts (this is how many times each word appears in the 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

我不确定如何对其进行排序并保留值。

这是一道作业题,所以我无法给你完整的答案,但这里足以让你入门。你的错误在这一行

sorted_count = sorted(counts)

首先,您不能按性质对字典进行排序。其次,它所做的是获取字典的键,对它们进行排序,然后 returns 一个列表。

您可以只打印计数的值,或者,如果您确实需要按排序顺序排列它们,请考虑将字典项更改为列表,然后对它们进行排序。

lst = list(count.items())

#sort and return lst