在我的python程序中,我得到这个错误:
KeyError: 'variablename'
从这段代码:
path = meta_entry['path'].strip('/'),
有人能解释一下为什么会这样吗?
在我的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
如果您使用的是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'}
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
这意味着你的数组缺少你正在寻找的键。我用一个函数来处理这个问题,该函数要么返回存在的值,要么返回默认值。
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
是的,它很可能是由不存在的密钥引起的。
在我的程序中,出于效率考虑,我使用了setdefault来消除这个错误。 取决于这条线的效率
>>>'a' in mydict.keys()
我对Python也不熟悉。事实上,我今天才学会。所以请原谅我对效率的无知。
在Python 3中,你也可以使用这个函数,
get(key[, default]) [function doc][1]
据说它永远不会引发键错误。