Python KEY ERROR

时间:2013-11-26 12:55:04

标签: python

生成的错误是:

  File "/home/tweet_v8/tweetSum/Summarizer/Sentence.py", line 42, in _tfIdfSentence
    w.append( self.lsa.getCell(doc, self.vectorSpace.keywords()[(term,)]) )     
KeyError: (u'l.a.',)

该函数的编写如下:

# tf-idf computation for one sentence
def _tfIdfSentence (self, sent, doc):
    w = []  
    for term in sent:
        w.append( self.lsa.getCell(doc, self.vectorSpace.keywords()[(term,)]) )     
    #print sent
    if max(w) > 0:
        #print [float(i)/max(w) for i in w], w, doc, sent
        return [float(i)/max(w) for i in w]
    else:
        return [0]

我不知道这行代码有什么问题。

w.append( self.lsa.getCell(doc, self.vectorSpace.keywords()[(term,)]) )     

有谁知道如何解决这个问题?

4 个答案:

答案 0 :(得分:0)

您获得了KeyError,因为在(u'l.a.',)词典中找不到搜索到的词典self.vectorSpace.keywords()

要避免KeyError,请使用dict的{​​{1}}设置默认值,如果您要搜索的密钥不存在:

get()

您可以用您需要的任何值替换w.append( self.lsa.getCell(doc, self.vectorSpace.keywords().get((term,), 'default') )

另一种方法是使用defaultdict

答案 1 :(得分:0)

KeyError: (u'l.a.',)

Python告诉你键(字典的键/值对)“l.a.” unicode类型不存在。

如果你只想将它设置为某事,你可以在try /除KeyError中包装它。

答案 2 :(得分:0)

由于某种原因,您遇到的错误称为KeyError,如果没有可重现的代码示例,我们无法理解 您做错了什么。但是,一个可以向您解释KeyError是什么:

>>> d = {'a': 'happy'}
>>> d['a']
'happy'
>>> d['something_that_does_not_exist']
Traceback (most recent call last):
  File "<console>", line 1, in <module>
KeyError: 'something_that_does_not_exist'

你知道,你拥有的是字典,或者通常称为 hash-map 。现在,当哈希映射中不存在密钥时,您将获得KeyError

答案 3 :(得分:0)

显然, self.vectorSpace.keywords()会返回一个字典。您希望此字典包含某个值 - 它不包含。或者它包含值 - 但是以非unicode形式。 尝试使用 str(term)而不是 term 一点效率改进:

kew_words = self.vectorSpace.keywords()
for term in sent:
    try:
        w.append(self.lsa.getCell(doc, key_words[(str(term),)]
    except KeyError:
        <do some stuff>

如果您打印* key_words * - 并检查其内容

,它会有所帮助