gpt4 book ai didi

Python异常KeyError问题

转载 作者:行者123 更新时间:2023-11-30 23:50:14 29 4
gpt4 key购买 nike

这确实是一个菜鸟问题,但我不知道如何调试,所以我在这里。Python官方文档说:“异常KeyError:在现有键集中找不到映射(字典)键时引发”。足够简单。

我正在编写 Python 代码来生成嵌套字典,从外部字典开始并向内工作。下面是代码:

dict1 = {}

# retrieve information from the database
rs = db.execute("select id_stn, id_typ, id_dev, id from point where id='keyword1' and id_typ<>'keyword2' and id_typ<>'keyword3' and good=1")

# adding information to dictionay
for line in rs:
arg = [x.strip() for x in line]

if arg[0] not in stnList:
continue

typ = arg[1]

if arg[0] not in dict1:
dict1[arg[0]] = {}

if Typ not in dict1[arg[0]]:
dict1[arg[0]][typ] = {}

dev = arg[2]

if typ == 'TYPE1':
dev = arg[2].replace('_M','').replace('_N','')
m = pattern.search(dev)
if m:
dev = m.group(1)

dict1[arg[0]][typ][dev] = []

newTyp = 'CK' + typ

if newTyp not in dict1[arg[0]]:
dict1[arg[0]][newTyp] = {}

dict1[arg[0]][newTyp][dev] = arg[:]

代码编译并执行良好。但是,当我将以下内容添加到代码中时:

for line in avr:
print (dict1[arg[0]], dict1[newTyp], dict1[dev], arg)

我收到 KeyError 说“newTyp”之一不在列表中。我检查了三遍, key 肯定在“newTyp”列表中。然后,如果我这样做:

print (dict1)

它打印出所有内容,但不是我想要的漂亮的 ListView 。我希望输出显示如下:

Dict1 | level 1-1  | level 2-1-1 | level 3-1-1-1 | core [1]
| core [2]
| core [3]
| level 3-1-1-2 | core [1]
| core [2]
| level 2-1-2 | level 3-1-2-1 | core [1]
| core [2]
| level 3-1-2-2 | core [1]
| level 1-2 | level 2-2-1 | level 3-2-1-1 | core [1]
| level 3-2-1-2 | core [1]
| level 2-2-2 | level 3-2-2-1 | core [1]
| core [2]
| level 3-2-2-2 | core [1]
..........

我错过了什么吗?如何生成良好的格式化输出?

提前致谢:)

最佳答案

尝试以下操作:

for line in avr:
try:
print (dict1[arg[0]], dict1[newTyp], dict1[dev], arg)
except KeyError:
import sys, pdb
pdb.post_mortem(sys.exc_info()[2])

然后在控制台上运行该进程,您就可以 inspect the stack在你的错误点看看到底发生了什么。

关于Python异常KeyError问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7260205/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com