关于#keyerror#的问题,如何解决?

这是什么情况呀?有兄弟帮忙解答一下吗

 target_list = {}
        for ks in key_sentences:
            # print ks
            words = T.postag(ks)
            for w in words:
                # print "====="
                # print w.word
                if w.flag == ("nr"):
                    if w.word not in target_list:
                        target_list[w.word] += 1
                    else:
                        target_list[w.word] = 1

Traceback (most recent call last):
  File "D:/IJspace/QA-Snake-master/QA/MainProgram.py", line 102, in 
    ans = search_summary.kwquery(input_message)
  File "D:\IJspace\QA-Snake-master\QA\QACrawler\search_summary.py", line 262, in kwquery
    target_list[w.word] += 1
KeyError: '释永信'

以下答案引用自GPT-3大模型,请合理使用:

:

KeyError表示字典中没有该键值(key),具体的解决方法取决于python程序的具体实现,但可以大致分为两种:

1、当你需要获取的键值(key)不一定存在时,可以使用字典的get()方法。即使在字典中没有找到该键值(key)也不会抛出异常,而是返回None:

target_list.get(w.word, 0)  # 若字典存在该键值,则返回其值;不存在则返回0

2、当你需要获取的键值(key)必须存在时,可以使用setdefault()方法,该方法在字典中没有找到该键值(key)时,会自动添加该键值(key)及相应的值(value):

target_list.setdefault(w.word, 0)  # 若字典存在该键值,则返回其值;不存在则添加键值并返回0

如果我的回答解决了您的问题,请采纳我的回答

img


这里写反了,没有对应key的时候赋初值,有的时候才自增,修改后的代码:

for ks in key_sentences:
            # print ks
            words = T.postag(ks)
            for w in words:
                # print "====="
                # print w.word
                if w.flag == ("nr"):
                    if w.word not in target_list:
                        target_list[w.word] = 1
                    else:
                        target_list[w.word] += 1

有帮助的话,请点采纳~

  • 这篇文章:KeyError: 1 也许能够解决你的问题,你可以看下