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

KeyError: 'variablename'

从这段代码:

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

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


当前回答

对于字典,使用即可

如果输入字典

不要在键列表中使用搜索

If key in dict.keys()

后者将更加耗时。

其他回答

如果您使用的是Python 3,让我们简化一下

mydict = {'a':'apple','b':'boy','c':'cat'}
check = 'c' in mydict
if check:
    print('c key is present')

如需其他条件

mydict = {'a':'apple','b':'boy','c':'cat'}
if 'c' in mydict:
    print('key present')
else:
    print('key not found')

对于动态键值,也可以通过try-exception块进行处理

mydict = {'a':'apple','b':'boy','c':'cat'}
try:
    print(mydict['c'])
except KeyError:
    print('key value not found')mydict = {'a':'apple','b':'boy','c':'cat'}

对于字典,使用即可

如果输入字典

不要在键列表中使用搜索

If key in dict.keys()

后者将更加耗时。

例如,如果这是一个数字:

ouloulou={
    1:US,
    2:BR,
    3:FR
    }
ouloulou[1]()

它工作得很完美,但如果你用例如:

ouloulou[input("select 1 2 or 3"]()

这行不通,因为你的输入返回字符串'1'所以你需要使用int()

ouloulou[int(input("select 1 2 or 3"))]()

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

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

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

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