首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我的判决书怎么了?

我的判决书怎么了?
EN

Stack Overflow用户
提问于 2012-10-24 04:33:33
回答 5查看 127关注 0票数 0

我正在运行下面的代码来计算一个单词在文本文件中出现的次数。

代码语言:javascript
运行
复制
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

字典文件应该保存每个单词及其计数。我能够让它工作得很好。但是我没能对

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-10-24 04:36:43

sorted(dict.keys())返回一个仅包含键的排序列表。您的for循环错误地期望在同一列表中查找这些值。请尝试下面的代码:

代码语言:javascript
运行
复制
for k in ke:
    print k, dict[k]
票数 1
EN

Stack Overflow用户

发布于 2012-10-24 04:48:29

其他答案指出了问题所在。如果您使用的是python 2.7+,这里有一种更简单的方法,即使用collections模块中的Counter类。

代码语言:javascript
运行
复制
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
票数 2
EN

Stack Overflow用户

发布于 2012-10-24 04:36:40

而不是

代码语言:javascript
运行
复制
ke = sorted(dict.keys())
for k, v in ke: print k, v

尝试:

代码语言:javascript
运行
复制
for k in sorted(dict.keys()):
    print k, dict[k]

sorted(dict.keys())将返回一个仅包含键的排序列表(因为这就是您给它的全部内容)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13038810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档