所以基本上我通过嵌套的字典extension
遍历像这样:检查嵌套的字典项存在
extension['value1']['value2']['value3']['value4']
但是,有时字典文件可以是有点不同:
extension['value1']['value2']['blah1']['value4']
如何我可以解释这种情况吗?我不必担心大量场景,关键将只有value3
或blah1
所以基本上我通过嵌套的字典extension
遍历像这样:检查嵌套的字典项存在
extension['value1']['value2']['value3']['value4']
但是,有时字典文件可以是有点不同:
extension['value1']['value2']['blah1']['value4']
如何我可以解释这种情况吗?我不必担心大量场景,关键将只有value3
或blah1
你可以写一个函数来获取第一个存在的关键:
def get_first_item(items, keys):
for k in keys:
if k in items:
return items[k]
raise KeyError
,然后用它是这样的:
get_first_item(extension['value1']['value2'], ['value3', 'blah1'])['value4']
您必须明确检查key
,然后获取其值。例如:
optional_keys = ['value3', 'blah1']
value = None
for optional_key in optional_keys:
if optional_key in extension['value1']['value2']:
value = extension['value1']['value2'][optional_key]['value4']
break
我觉得上面的两个答案可以很好地解决你的问题。由于您的关键将是要么value3
或blah1
,而不是一个功能,你不妨使用下面的代码,当你遍历词典:
try:
value = extension['value1']['value2']['value3']['value4']
except Exception as e: # except KeyError:
# print(e)
value = extension['value1']['value2']['blah1']['value4']
考虑到只有两个键可能会有所不同,它将工作。 –
谢谢你,你要跟都张贴在基本相同的时间,所以我不得不接受一个,我去了Ryans,因为它看起来更直观一些。我很欣赏这种反应,但总是很好,有不同的方法:) –