我在Python中得到关键错误
在我的Python程序中,我得到这个错误:
KeyError: 'variablename'
从这个代码:
path = meta_entry['path'].strip('/'),
任何人都可以解释为什么发生这种情况?
KeyError
通常意味着密钥不存在。 那么,你确定path
密钥存在吗?
从官方的python文档:
exceptionKeyError
当在一组现有密钥中找不到映射(字典)键时引发。
例如:
>>> mydict = {'a':'1','b':'2'} >>> mydict['a'] '1' >>> mydict['c'] Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'c' >>>
所以,试着打印meta_entry
的内容并检查path
是否存在。
>>> mydict = {'a':'1','b':'2'} >>> print mydict {'a': '1', 'b': '2'}
或者,你可以这样做:
>>> 'a' in mydict True >>> 'c' in mydict False
我完全同意关键的错误评论。 你也可以使用字典的get()方法来避免exception。 这也可以用来给出一个默认path而不是None
,如下所示。
>>> d = {"a":1, "b":2} >>> x = d.get("A",None) >>> print x None
对于字典,请使用
if key in dict
而不是使用
if key in dict.keys()
这将是非常耗时的
是的,这很可能是由不存在的钥匙引起的。
在我的程序中,为了提高效率,我使用了setdefault来静音这个错误。 取决于这条线的效率
>>>'a' in mydict.keys()
我也是Python新手。 其实我今天才知道。 所以请原谅我对效率的无知。
在Python 3中,你也可以使用这个函数,
get(key[, default]) [function doc][1]
据说它永远不会提出一个关键的错误。
这意味着你的数组缺less你正在寻找的键。 我用一个函数来处理这个函数,如果它存在的话它会返回值,或者它会返回一个默认值。
def keyCheck(key, arr, default): if key in arr.keys(): return arr[key] else: return default myarray = {'key1':1, 'key2':2} print keyCheck('key1', myarray, '#default') print keyCheck('key2', myarray, '#default') print keyCheck('key3', myarray, '#default')
输出:
1 2 #default