处理异常 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.