Python: 将列表转换为具有异常处理的多维字典的字典键

Python: Convert list to dict keys for multidimensional dict with exception handling

我有一个多维词典集合,如下所示

dict1 = {'key21':{'key31': {'key41':val41}, 'key32':{'key42':val42}}}

Apriori,不知道字典的维度。我收集了大量可能的键,每个字典可能包含也可能不包含键。即使存在,键也可能不必按相同顺序排列。

如果我从集合中创建一个可能的键值列表,比如

list1 = ['key21', 'key32', 'key42']

如何将列表作为键传递,以便我可以使用类似于 get 命令

的异常处理来获取 dict1['key21']['key32']['key42'] 的值

你可以迭代查询字典,像这样:

dict1 = {'key21':{'key31': {'key41':41}, 'key32':{'key42':42}}}
list1 = ['key21', 'key32', 'key42']
#list1 = ['key21', 'key32', 'key42', 'bad-key'] # Test bad key
item = dict1
try:
    for key in list1:
            item = item[key]
except (KeyError, TypeError):
    print None
else:
    print item

KeyError 处理密钥不存在的情况。 TypeError 处理项目不是字典的情况,因此无法进行进一步查找。这是一个很容易被忽视的有趣案例(我是第一次)。