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

Python中如何将字符串转换为变量名构造目标变量列表

Python根据字符串列表获取同名变量生成新列表的实现方式

你可以通过查询Python作用域对应的命名空间字典实现这个需求,具体写法分两种场景:

  • 全局作用域场景:如果feature1、feature2是定义在全局的变量,用globals()获取全局命名空间字典,按字符串key取值即可
x = ['feature1', 'feature2']
# 提前定义好同名变量
feature1 = 123
feature2 = 456

y = [globals()[var_name] for var_name in x]
print(y) # 输出 [123, 456]
  • 局部作用域场景:如果同名变量定义在函数内部等局部范围,把globals()替换为locals()获取局部命名空间字典即可
def demo():
    feature1 = "局部变量1"
    feature2 = "局部变量2"
    x = ['feature1', 'feature2']
    y = [locals()[var_name] for var_name in x]
    print(y) # 输出 ['局部变量1', '局部变量2']

demo()

注意:如果列表里的字符串没有对应的同名变量,上述写法会直接抛出KeyError,需要容错的话可以改成globals().get(var_name, 兜底默认值)的形式,避免程序崩溃。

更规范的替代写法

非常不推荐在业务代码里频繁用globals/locals动态查变量,这种写法调试、维护成本极高,很容易出隐蔽bug。如果需要按字符串名称匹配对应值,一开始就用字典来存储名称和值的映射是更符合Python编码规范的方案:

# 用字典统一维护名称和值的映射关系,不需要侵入命名空间
feature_dict = {
    'feature1': 123,
    'feature2': 456
}
x = ['feature1', 'feature2']
y = [feature_dict[name] for name in x]

内容的提问来源于stack exchange,提问作者Giampaolo Levorato

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 16:27:20