处理异常 KeyError - Python
handling exception KeyError - Python
我在以下代码中得到一个不存在的 key
的“KeyError
”:
c.execute("SELECT * FROM table1 where col1 = 'test'")
res = c.fetchall()
sum = 0
for x in res:
print "res: ",res
d = {"num1" : [ str(testVal[x[2]]['num1']) for x in res ],
"num2" : [ str(testVal[x[2]]['num2']) for x in res ],
}
conn.close()
这是错误:
"num1": [ str(testVal[x[2]]['num1']) for x in res ],
KeyError: u'13'
如何检查该键是否有值,然后将其分配给 "num1", "num2"
。
类似的东西:
"num1": [ str(ch_id[x[2]]['num1']) for x in res if x[2] in ch_id]
由于执行是贪婪的,如果条件是False
,Python将不会计算str(ch_id[x[2]]['num1'])
,所以你不会得到错误。它只会跳过丢失的键。如果你不知道这个语法,你可以阅读 here.
我在以下代码中得到一个不存在的 key
的“KeyError
”:
c.execute("SELECT * FROM table1 where col1 = 'test'")
res = c.fetchall()
sum = 0
for x in res:
print "res: ",res
d = {"num1" : [ str(testVal[x[2]]['num1']) for x in res ],
"num2" : [ str(testVal[x[2]]['num2']) for x in res ],
}
conn.close()
这是错误:
"num1": [ str(testVal[x[2]]['num1']) for x in res ],
KeyError: u'13'
如何检查该键是否有值,然后将其分配给 "num1", "num2"
。
类似的东西:
"num1": [ str(ch_id[x[2]]['num1']) for x in res if x[2] in ch_id]
由于执行是贪婪的,如果条件是False
,Python将不会计算str(ch_id[x[2]]['num1'])
,所以你不会得到错误。它只会跳过丢失的键。如果你不知道这个语法,你可以阅读 here.