我目前正在尝试使用《集体智能编程》这本书中的一些代码,构建一个文档分类器时,遇到了由docclass.py
引起的错误。有人能告诉我如何调试这类问题吗?
def __init__(self,getfeatures,filename=None): self.fc={} self.cc={} self.getfeatures=getfeaturesdef incf(self,f,cat): self.fc.setdefault(f,{}) self.fc.setdefault(cat,0) self.fc[f][cat]+=1def incc(self,cat): self.cc.setdefault(cat,0) self.cc[cat]+=1def train(self,item,cat): features=self.getfeatures(item) for f in features: self.incf(f,cat) self.incc(cat)
我得到了以下错误:
>>> import docclass>>> c1=docclass.classifier(docclass.getwords)>>> c1.train('the quick brown fox jumps over the lazy dog','good')Traceback (most recent call last): File "<pyshell#32>", line 1, in <module> c1.train('the quick brown fox jumps over the lazy dog','good') File "docclass.py", line 36, in train self.incf(f,cat) File "docclass.py", line 17, in incf self.fc[f][cat]+=1KeyError: 'good'
回答:
KeyError
异常告诉您字典中没有这样的键:
当映射(字典)中的键在现有键集中找不到时引发此异常。
查看代码,似乎
self.fc.setdefault(cat,0)
应该改为
self.fc[f].setdefault(cat,0)