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

Python如何将嵌套字典访问语句作为函数参数传递?

实现方案

你原来的写法存在两个核心问题:

  • 第二个参数的写法['dwe']['dwdw']['fefe']本身是非法语法,单独执行会抛出TypeError: list indices must be integers or slices, not str,单元素列表无法用字符串作为索引取值
  • 函数内的data + nest逻辑完全不匹配取值需求,字典和列表无法直接相加

推荐实现(无安全风险)

把第二个参数调整为嵌套键的有序列表,在函数内循环遍历取值即可:

dic = {'wow': 77, 'yy': 'gt', 'dwe': {'dwdw': {'fefe': 2006}}}

def get_missing_key(data, nest, default_value):
    try:
        current = data
        for key in nest:
            current = current[key]
        return current
    except KeyError:
        return default_value

# 调用示例
print(get_missing_key(dic, ['dwe', 'dwdw', 'fefe'], 16)) # 输出 2006
print(get_missing_key(dic, ['dwe', 'not_exist', 'fefe'], 16)) # 输出 16

这个方案不需要执行动态代码,没有注入风险,兼容任意层级的嵌套字典取值。

可选实现(不推荐,有安全风险)

如果你一定要传入表达式形式的参数,可以把第二个参数改为字符串格式的表达式,用eval执行,但如果参数来自用户输入会有恶意代码执行风险:

def get_missing_key(data, nest, default_value):
    try:
        return eval(f"data{nest}")
    except KeyError:
        return default_value

# 调用示例
print(get_missing_key(dic, "['dwe']['dwdw']['fefe']", 16)) # 输出 2006

内容的提问来源于stack exchange,提问作者Hussein Al-Mosawi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 13:03:04