我正在使用动态响应结构(键)处理JSON数据集,并且如果存在某些键,则需要执行代码。现在,如果密钥不存在,它会抛出一个键错误,我试图通过bool操作数,但似乎键错误胜过Python中的bool操作数。
bool(dictionary['key'])
KeyError: 'key'
我觉得有一些方法可以做到这一点比我尝试更容易,但只是通过研究找不到任何东西。任何帮助将不胜感激。
答案 0 :(得分:6)
你想要None
。默认情况下,这会返回False
,其评估为canvas.on('mouse:down', handler);
。
答案 1 :(得分:1)
使用dict.get
并在未找到密钥时设置默认值
dictionary.get('key', 'NotFound')
答案 2 :(得分:0)
您是否尝试过使用dictionary.has_key(key_name)
如果密钥存在,此方法将返回true,否则返回false。
答案 3 :(得分:-1)
你想要这样的东西吗?
#!python3
json_data = [
{ 'key1':
{ 'key2':
[
{'key3': 1 }
]
}
}
]
def get_deep(*keys):
try:
doa = json_data
for key in keys:
doa = doa[key]
return doa
except KeyError:
return None
except IndexError:
return None
tests = (
# Want, Keys...
(1, 0, 'key1', 'key2', 0, 'key3'),
(None, 1, 'key1', 'key2', 0, 'key3'),
(None, 0, 'key11', 'key2', 0, 'key3'),
(None, 0, 'key1', 'key22', 0, 'key3'),
(None, 0, 'key1', 'key2', 1, 'key3'),
(None, 0, 'key1', 'key2', 0, 'key33'),
)
for i,test in enumerate(tests):
expected,*keys = test
got = get_deep(*keys)
if got is expected:
print(i, "OK")
else:
print(i, "FAIL", got, "is not", expected)