使用“if in dict”时出现Python键错误

2024-06-06 05:50:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我在运行脚本来解析XML文件的内容时收到以下错误。

if iteration.findtext("Iteration_query-def") in ecdict:
KeyError: 'XLOC_000434'

在我的印象中,使用“if-in-dict”意味着如果在字典中找不到键,脚本将继续通过if语句并继续执行其余代码。下面是我使用的代码中有问题的部分。我知道这是一个很基本的问题,但我不确定我还能说什么,我不明白为什么我会收到这个错误。

^{pr2}$

希望你能帮忙

谢谢。

编辑:我应该说,godict和ecdict以前是按如下方式创建的-如果需要,我可以提交整个代码:

godict = {}
ecdict = {}
godescr = {}
f = open("507.FINAL_14.2.14_2_nr.out_fmt5.out.annot")
for line in f:
        line = line.split("\t")
        if len(line) > 2:
                godescr[line[0]] = line[2]
        line[1] = line[1].strip("\n")
        if line[1].startswith("EC"):
                if line[0] in ecdict:
                        a = ecdict[line[0]]
                        a.append(line[1])
                        ecdict[line[0]] = a
                else:
                        ecdict[line[0]] = [line[1]]
        else:
                if line[0] in godict:
                        a = godict[line[0]]
                        a.append(line[1])
                        godict[line[0]] = a
                else:
                        godict[line[0]] = [line[1]]

回溯:

Traceback (most recent call last):
  File "2d.test.py", line 170, in <module>
    p = "PvOAK_up"+str(n) + "\t" + tranlen[iteration.findtext("Iteration_query-def")] + "\t" + orflen[iteration.findtext("Iteration_query-def")] + "\t" + "-" + "\t" + "-" + "\t" + tairid  + "\t" + tairdes + "\t" + goterms + "\t" + ecterms + "\t" + desc + "\t" + str(flower[query][2]) + "\t" + str('{0:.2e}'.format(float(flower[query][1]))) + "\t" + str('{0:.2f}'.format(float(flower[query][0]))) + "\t" + str('{0:.2f}'.format(float(leaf[query][2]))) + "\t" + str('{0:.2f}'.format(float(leaf[query][1]))) + "\t" + str('{0:.2f}'.format(float(leaf[query][0])))
KeyError: 'XLOC_000434'

Tags: 代码informatifdeflinefloatquery