【发布时间】:2017-04-25 08:21:35
【问题描述】:
我将一个文本文件作为输入并创建一个函数来计算最常出现的单词。如果 2 个或更多单词出现频率最高且相等,我将打印所有这些单词。
def wordOccurance(userFile):
userFile.seek(0)
line = userFile.readline()
lines = []
while line != "":
if line != "\n":
line = line.lower() # making lower case
line = line.rstrip("\n") # cleaning
line = line.rstrip("?") #cleans the whole docoument by removing "?"
line = line.rstrip("!") #cleans the whole docoument by removing "!"
line = line.rstrip(".") #cleans the whole docoument by removing "."
line = line.split(" ") #splits the texts into space
lines.append(line)
line = userFile.readline() # keep reading lines from document.
words = lines
wordDict = {} #creates the clean word Dic, from above
for word in words: #
if word in wordDict.keys():
wordDict[word] = wordDict[word] + 1
else:
wordDict[word] = 1
largest_value = max(wordDict.values())
for k in wordDict.keys():
if wordDict[k] == largest_value:
print(k)
return wordDict
请帮我完成这个功能。
【问题讨论】:
-
哪一行会引发错误?在某些时候(可能在
wordDict[word] = 1),您正在尝试将列表用作字典键,这是不允许的。 -
这一行给了我错误信息:if word in wordDict.keys():
-
我想不出有什么方法可以让你从那行得到那个错误。我发布的解决方案对您有用吗?如果没有,您能否在您的问题中发布您的错误的完整回溯,以便我可以更好地帮助您?
-
您的解决方案有效,但我不明白。这是我在大学的第一门编程课程,我之前从未见过那行代码来了解它是如何工作的。除此之外非常感谢你
-
知道了。请参阅我更新的答案以获取对该行的解释,以及嵌套循环的简化解决方案。
标签: list function python-3.x dictionary methods