检查是否存在嵌套字典键

时间:2016-11-23 17:34:23

标签: python dictionary

所以基本上我正在遍历嵌套字典extension,如下所示:

extension['value1']['value2']['value3']['value4']

但是,有时dict文件可能会有所不同:

extension['value1']['value2']['blah1']['value4']

我如何解释这种情况?我不必担心大量情况,密钥只会是value3blah1

3 个答案:

答案 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)

我认为以上两个答案可以很好地解决您的问题。由于您的密钥将是value3blah1,而不是函数,因此在循环字典时也可以使用以下代码:

try:
    value = extension['value1']['value2']['value3']['value4']
except Exception as e:  # except KeyError:
    # print(e)
    value = extension['value1']['value2']['blah1']['value4']