我有一组多维字典,如下所示
dict1 = {'key21':{'key31': {'key41':val41}, 'key32':{'key42':val42}}}
Apriori,我不知道字典的尺寸。我有一大堆可能的密钥,每个字典可能包含也可能不包含密钥。即使存在,密钥也可能不必处于相同的顺序。
如果我从集合中创建可能的键值列表,请说
list1 = ['key21', 'key32', 'key42']
如何将列表作为键传递,以便我可以获得dict1['key21']['key32']['key42']
的值,其异常处理类似于get命令
答案 0 :(得分:3)
您可以迭代地查询字典,如下所示:
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
处理项不是字典的情况,因此无法进行进一步的查找。这是一个很容易错过的有趣案例(我是第一次做的)。