我是python的新手,我正在尝试使用字典编写一个简单的单词计数器。我想知道为什么以下代码不起作用:
while word != None:
wordObject = Word()
wordObject.setWord(word)
if dictionary.has_key(wordObject.getWord():
setCount = dictionary[wordObject.getWord()]
setCount.setCount()
如果我保留它,它永远不会进入if语句,如果我在has key方法中放入一个键值,那么它将进入语句并说我的setCount变量语法无效。我试图将该变量设置为存储在我所做的字典中的键值的对象,然后使用setCount方法增加单词count。感谢。
答案 0 :(得分:1)
使用collections.Counter
进行计数(Python 2.7+)。例如,如果你想计算一个单词列表,这就是你要做的:
from collections import Counter
words = ['stack', 'overflow', 'stack', 'exchange']
counter = Counter(words)
print counter
结果:
Counter({'stack': 2, 'overflow': 1, 'exchange': 1})
Counter
只是一个字典,带有一些额外的便利方法,如most_common([n])
,当尝试获取不存在的密钥时,它返回零。所以如果你使用的是Python< 2.7您可以通过子类dict
轻松实现自己的。
答案 1 :(得分:0)
我无法看到您的整个代码,但可以预测您必须在setCount
中使用某个方法wordObject
并错误地使用本地变量。更改为wordObject.setCount()
可能有助于简化
count = 0
while word != None:
wordObject = Word()
wordObject.setWord(word)
if dictionary.has_key(wordObject.getWord():
setCount=dictionary[wordObject.getWord()]
count += 1
足以存储计数。