keys = ['prop1', 'prop2', 'prop3']dict = { prop1: { prop2: { prop3: True } } }如何True使用列表从字典中获取值?没有任何成功val = reduce((lambda a, b: dict[b]), keys)更新:keys并且dict可以任意长,但将始终具有匹配的属性/键。
2 回答
慕容3067478
TA贡献1773条经验 获得超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
幕布斯6054654
TA贡献1876条经验 获得超7个赞
作为操作。重新表述了他的问题,我做了一个更新:
实际上,您根本不需要键来获得“真”。您可以使用递归函数在不知道键的情况下很好地完成它。
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
添加回答
举报
0/150
提交
取消