如何通过动态键列表获取Python嵌套字典的键值?
动态获取嵌套字典中键列表对应的值
假设我们有如下嵌套字典和动态键列表:
d = { 'a': { 'b': { 'c': 'value' } } } keyList = ['a', 'b', 'c']
静态取值可通过d['a']['b']['c']实现,但当键列表长度可变时,有两种Pythonic的实现方式:
方法一:循环遍历(直观易读)
通过遍历键列表,逐层访问嵌套字典:
current = d for key in keyList: current = current[key] print(current) # 输出: value
如果需要处理键不存在的异常情况,可添加捕获逻辑:
current = d try: for key in keyList: current = current[key] except KeyError: current = None # 可根据需求设置其他默认值 print(current)
方法二:使用functools.reduce(简洁优雅)
利用reduce函数将键列表的每个元素依次作用于字典,一行代码完成取值:
from functools import reduce value = reduce(lambda obj, key: obj[key], keyList, d) print(value) # 输出: value
若要避免键不存在时抛出异常,可结合dict.get设置兜底逻辑:
from functools import reduce value = reduce(lambda obj, key: obj.get(key, {}), keyList, d) # 若中间键不存在,最终返回空字典,可按需判断处理 print(value if value != {} else None)
内容的提问来源于stack exchange,提问作者BigQuestionsNoAnswers
相关产品推荐
相关产品推荐

