在我的python程序中,我得到这个错误:

KeyError: 'variablename'

从这段代码:

path = meta_entry['path'].strip('/'),

有人能解释一下为什么会这样吗?


当前回答

是的,它很可能是由不存在的密钥引起的。

在我的程序中,出于效率考虑,我使用了setdefault来消除这个错误。 取决于这条线的效率

>>>'a' in mydict.keys()  

我对Python也不熟悉。事实上,我今天才学会。所以请原谅我对效率的无知。

在Python 3中,你也可以使用这个函数,

get(key[, default]) [function doc][1]

据说它永远不会引发键错误。

其他回答

我收到这个错误,当我解析字典与嵌套:

cats = {'Tom': {'color': 'white', 'weight': 8}, 'Klakier': {'color': 'black', 'weight': 10}}
cat_attr = {}
for cat in cats:
    for attr in cat:
        print(cats[cat][attr])

回溯:

Traceback (most recent call last):
      File "<input>", line 3, in <module>
    KeyError: 'K'

因为在第二个循环中应该是cats[cat]而不是cat(什么只是一个键)

So:

cats = {'Tom': {'color': 'white', 'weight': 8}, 'Klakier': {'color': 'black', 'weight': 10}}
cat_attr = {}
for cat in cats:
    for attr in cats[cat]:
        print(cats[cat][attr])

给了

black
10
white
8

KeyError通常表示该键不存在。你确定路径键存在吗?

来自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'
>>>

因此,尝试打印meta_entry的内容并检查path是否存在。

>>> mydict = {'a':'1','b':'2'}
>>> print mydict
{'a': '1', 'b': '2'}

或者,你可以这样做:

>>> 'a' in mydict
True
>>> 'c' in mydict
False

我完全同意关键错误的评论。您也可以使用字典的get()方法来避免异常。这也可以用于提供默认路径,而不是如下所示的None。

>>> d = {"a":1, "b":2}
>>> x = d.get("A",None)
>>> print x
None

是的,它很可能是由不存在的密钥引起的。

在我的程序中,出于效率考虑,我使用了setdefault来消除这个错误。 取决于这条线的效率

>>>'a' in mydict.keys()  

我对Python也不熟悉。事实上,我今天才学会。所以请原谅我对效率的无知。

在Python 3中,你也可以使用这个函数,

get(key[, default]) [function doc][1]

据说它永远不会引发键错误。

对于字典,使用即可

如果输入字典

不要在键列表中使用搜索

If key in dict.keys()

后者将更加耗时。