计算.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
我不确定我是否正确地这样做了。希望有人可以帮助我。
当我运行程序时,我会收到:
>>>
>>>
这是一段演讲。
答案 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)