字符串到字典单词计数和显示

时间:2016-09-27 00:56:57

标签: python-3.x ordereddictionary

我有一个问题的作业问题:

  

编写一个以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

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

1 个答案:

答案 0 :(得分:1)

这是一个家庭作业问题,所以我不能给你完整的答案,但这足以让你开始。你的错误在于这一行

sorted_count = sorted(counts)

首先,你无法对字典进行排序。其次,这样做是取字典的键,对它们进行排序,然后返回一个列表。

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

lst = list(count.items())

#sort and return lst