所以基本上我通過嵌套的字典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,因爲它看起來更直觀一些。我很欣賞這種反應,但總是很好,有不同的方法:) –