keys = ['prop1', 'prop2', 'prop3']
dict = { prop1: { prop2: { prop3: True } } }
如何使用列表从字典中获取值True
?
没有成功
val = reduce((lambda a, b: dict[b]), keys)
更新:
keys
和dict
可以任意长,但始终具有匹配的属性/键。
答案 0 :(得分:3)
使用循环:
>>> a = ['prop1', 'prop2', 'prop3']
>>> d = {'prop1': {'prop2': {'prop3': True}}}
>>> result = d
>>> for k in a:
... result = result[k]
...
>>> result
True
使用功能样式:
>>> from functools import reduce
>>> reduce(dict.get, a, d)
True
答案 1 :(得分:1)
编辑: 作为操作。改写了他的问题,我进行了更新:
实际上,您根本不需要密钥就可以获取“ True”。 您可以使用递归函数在不知道键的情况下很好地完成操作。
d = { 'prop1': { 'prop2': { 'prop3': True } } }
def d_c(dc):
if isinstance(list(dc.values())[0], dict):
return d_c(list(dc.values())[0])
return list(dc.values())[0]
结果:
True