我正在运行下面的代码来计算一个单词在文本文件中出现的次数。
def print_words(filename):
f = open(filename, 'rU')
dict={}
for line in f:
words=line.split()
for word in words:
if dict.get(word):
dict[word]=dict[word]+1
else:
dict[word]=1
ke = sorted(dict.keys())
for k, v in ke: print k, v字典文件应该保存每个单词及其计数。我能够让它工作得很好。但是我没能对
发布于 2012-10-24 04:36:43
sorted(dict.keys())返回一个仅包含键的排序列表。您的for循环错误地期望在同一列表中查找这些值。请尝试下面的代码:
for k in ke:
print k, dict[k]发布于 2012-10-24 04:48:29
其他答案指出了问题所在。如果您使用的是python 2.7+,这里有一种更简单的方法,即使用collections模块中的Counter类。
from collections import Counter
def print_words(filename):
with open(filename, 'rU') as f:
counts = Counter(f.read().split())
for k, v in sorted(counts.items()):
print k, v发布于 2012-10-24 04:36:40
而不是
ke = sorted(dict.keys())
for k, v in ke: print k, v尝试:
for k in sorted(dict.keys()):
print k, dict[k]sorted(dict.keys())将返回一个仅包含键的排序列表(因为这就是您给它的全部内容)。
https://stackoverflow.com/questions/13038810
复制相似问题