所以基本上我正在遍历嵌套字典extension
,如下所示:
extension['value1']['value2']['value3']['value4']
但是,有时dict文件可能会有所不同:
extension['value1']['value2']['blah1']['value4']
我如何解释这种情况?我不必担心大量情况,密钥只会是value3
或blah1
答案 0 :(得分:2)
您必须明确检查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
答案 1 :(得分:2)
您可以编写一个函数来获取存在的第一个键:
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']
答案 2 :(得分:2)
我认为以上两个答案可以很好地解决您的问题。由于您的密钥将是value3
或blah1
,而不是函数,因此在循环字典时也可以使用以下代码:
try:
value = extension['value1']['value2']['value3']['value4']
except Exception as e: # except KeyError:
# print(e)
value = extension['value1']['value2']['blah1']['value4']