You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何动态访问并打印Python嵌套字典指定路径的键值?

问题

我正在尝试实现字典键值的动态打印功能。
示例代码如下:

print(data['waninfo']['1']['user']['_value']) ->"teste"
print(data['waninfo']['1']['pw']['_value']) -> "teste123"

上述示例中,键'waninfo'和'1'是固定层级,我希望后续的键可以动态指定使用,参考写法如下:

fixedKey = "['user']['_value']"
print(data['waninfo']['1']+fixedKey)

请问该如何正确实现该需求?

解决方案

字符串拼接键路径的写法无法直接生效,Python不会自动把字符串格式的键解析成字典索引操作,推荐用以下两种安全可维护的方式实现:

  • 逐层遍历键列表取值
    把动态部分的键拆成有序列表存储,从固定层级的字典对象开始逐层索引即可,修改路径只需要调整键列表内容:
    # 先取出固定层级的字典对象
    base = data['waninfo']['1']
    
    # 动态配置需要取的键路径
    dynamic_path = ['user', '_value']
    res = base
    for k in dynamic_path:
        res = res[k]
    print(res)  # 输出teste
    
    # 切换取密码的路径
    dynamic_path = ['pw', '_value']
    res = base
    for k in dynamic_path:
        res = res[k]
    print(res)  # 输出teste123
    
  • 借助reduce简化取值逻辑
    可以用functools.reduce把逐层索引的逻辑收敛成一行写法,不需要手动写循环:
    from functools import reduce
    
    base = data['waninfo']['1']
    dynamic_path = ['user', '_value']
    res = reduce(lambda obj, key: obj[key], dynamic_path, base)
    print(res)
    

❗ 注意:严禁使用eval()执行拼接后的字符串完成取值,这种方式存在严重的代码注入风险,当路径内容来自外部输入时会直接导致任意代码执行漏洞。

内容的提问来源于stack exchange,提问作者Glauco Ribeiro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 11:39:20