Dav*_*iaw 174 python dictionary
在我的python程序中,我收到此错误:
KeyError: 'variablename'
Run Code Online (Sandbox Code Playgroud)
从这段代码:
path = meta_entry['path'].strip('/'),
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释为什么会这样吗?
Ran*_*Rag 236
A KeyError
通常意味着密钥不存在.那么,你确定path
密钥存在吗?
从官方python文档:
异常KeyError
在现有密钥集中找不到映射(字典)密钥时引发.
例如:
>>> mydict = {'a':'1','b':'2'}
>>> mydict['a']
'1'
>>> mydict['c']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'c'
>>>
Run Code Online (Sandbox Code Playgroud)
因此,尝试打印内容meta_entry
并检查是否path
存在.
>>> mydict = {'a':'1','b':'2'}
>>> print mydict
{'a': '1', 'b': '2'}
Run Code Online (Sandbox Code Playgroud)
或者,您可以这样做:
>>> 'a' in mydict
True
>>> 'c' in mydict
False
Run Code Online (Sandbox Code Playgroud)
Ada*_*wis 118
我完全同意Key错误评论.您也可以使用字典的get()方法来避免异常.这也可用于提供默认路径,而不是None
如下所示.
>>> d = {"a":1, "b":2}
>>> x = d.get("A",None)
>>> print x
None
Run Code Online (Sandbox Code Playgroud)
是的,它很可能是由不存在的密钥引起的。
在我的程序中,出于效率考虑,我使用setdefault将此错误静音。取决于这条线的效率
>>>'a' in mydict.keys()
Run Code Online (Sandbox Code Playgroud)
我也是Python的新手。实际上,我今天才学到它。因此,请原谅我对效率的无知。
在Python 3中,您也可以使用此功能,
get(key[, default]) [function doc][1]
Run Code Online (Sandbox Code Playgroud)
据说它永远不会引发关键错误。
归档时间: |
|
查看次数: |
584474 次 |
最近记录: |