Python 检查嵌套字典键是否存在
因此,基本上我正在遍历嵌套字典Python 检查嵌套字典键是否存在,python,dictionary,Python,Dictionary,因此,基本上我正在遍历嵌套字典扩展,如下所示: extension['value1']['value2']['value3']['value4'] 但是,有时dict文件可能有点不同: extension['value1']['value2']['blah1']['value4'] 我如何解释这种情况?我不必担心大量的场景,键只会是value3或blah1您必须明确检查键,然后获取其值。例如: optional_keys = ['value3', 'blah1'] value = None
扩展
,如下所示:
extension['value1']['value2']['value3']['value4']
但是,有时dict文件可能有点不同:
extension['value1']['value2']['blah1']['value4']
我如何解释这种情况?我不必担心大量的场景,键只会是
value3
或blah1
您必须明确检查键,然后获取其值。例如:
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
必须显式检查键
,然后获取其值。例如:
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
您可以编写一个函数来获取存在的第一个密钥:
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']
您可以编写一个函数来获取存在的第一个密钥:
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']
我认为以上两个答案可以很好地解决你的问题。由于您的键将是value3
或blah1
,而不是函数,因此在循环浏览字典时也可以使用以下代码:
try:
value = extension['value1']['value2']['value3']['value4']
except Exception as e: # except KeyError:
# print(e)
value = extension['value1']['value2']['blah1']['value4']
我认为以上两个答案可以很好地解决你的问题。由于您的键将是value3
或blah1
,而不是函数,因此在循环浏览字典时也可以使用以下代码:
try:
value = extension['value1']['value2']['value3']['value4']
except Exception as e: # except KeyError:
# print(e)
value = extension['value1']['value2']['blah1']['value4']
考虑到只有两个键可能会变化,它会起作用。考虑到只有两个键可能会变化,它会起作用。谢谢,你们两个基本上是在同一时间发布的,所以我不得不接受一个,我去了Ryans,因为它看起来更直观。不过,我很欣赏大家的反应,有不同的方法总是很好:)谢谢,你们两个基本上是在同一时间发布的,所以我不得不接受一个,我选择了Ryans,因为它看起来更直观一些。尽管如此,我还是很欣赏大家的反应,有不同的方法总是好的:)