Python - .txt文件中按频率和字母顺序排列的单词数量是多少?

时间:2013-11-14 03:49:20

标签: python count word frequency alphabetical

计算.txt文件中有多少个单词。

然后,按字母顺序打印按频率排序的单词。

def count_words():
    d = dict()
    word_file = open('words.txt')
    for line in word_file:
        word = line.strip();
        d = countwords(word,d)
    return d

我不确定我是否正确地这样做了。希望有人可以帮助我。

当我运行程序时,我会收到:

>>>
>>>

这是一段演讲。

2 个答案:

答案 0 :(得分:2)

我会使用像你这样的字典但不同:

def count_words():
d = dict()
word_file = open('words.txt')
for line in word_file:
    word = line.strip();
    if word not in d.keys():
        d[word] = 0
    d[word]+=1

然后你可以按照他们的计数对键进行排序并打印出来:

from operator import itemgetter
print(sorted(d.items(), key=itemgetter(1)))

对于我使用的排序模糊:Sort a Python dictionary by value

另外,你的程序没有任何打印语句,只有返回行,这就是为什么你什么也得不到的原因。

答案 1 :(得分:1)

#!/usr/local/cpython-3.3/bin/python

import pprint
import collections

def words(filename):
    with open(filename, 'r') as file_:
        for line in file_:
            for word in line.split():
                yield word.lower()

counter = collections.Counter(words('/etc/services'))

sorted_by_frequency = sorted((value, key) for key, value in counter.items())
sorted_by_frequency.reverse()
print('Sorted by frequency')
pprint.pprint(sorted_by_frequency)
print('')

sorted_alphabetically = sorted((key, value) for key, value in counter.items())
print('Sorted alphabetically')
pprint.pprint(sorted_alphabetically)