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

如何将变量列表转换为字典并保留原变量名作为键?

刚好碰到过类似的场景,给你几个实用的方案,根据你的需求选就行:

方案1:手动构造字典(最直观稳妥)

如果你的变量数量不多,直接手动键值对映射是最不容易出错的方式,清晰明了:

a = 1
b = 45
c = 73
d = "foo"
e = "bar"
f = 90
g = "banana"

# 直接创建目标字典,键就是变量名,值对应变量本身
data = {"a": a, "b": b, "c": c, "d": d, "e": e, "f": f, "g": g}
方案2:利用zip配对变量名与值

如果你已经有了variables列表,可以先定义变量名的列表,再用zip把两个列表配对成字典:

a = 1
b = 45
c = 73
d = "foo"
e = "bar"
f = 90
g = "banana"

variables = [a, b, c, d, e, f, g]
# 对应变量名的列表,顺序要和variables完全一致
var_names = ["a", "b", "c", "d", "e", "f", "g"]

# 用zip把变量名和值配对,再转成字典
data = dict(zip(var_names, variables))

这种方法比手动写全键值对更简洁,适合变量数量较多的情况,只要保证var_names和variables的顺序对应就行。

方案3:借助全局/局部命名空间

如果不想手动写var_names,可以利用Python的globals()(全局命名空间)或locals()(局部命名空间)来提取变量:

a = 1
b = 45
c = 73
d = "foo"
e = "bar"
f = 90
g = "banana"

# 从全局命名空间中筛选出你需要的变量
data = {k: v for k, v in globals().items() if k in ["a", "b", "c", "d", "e", "f", "g"]}

⚠️ 注意:如果你的脚本里还有其他全局变量,这种方法会把它们也包含进来,所以一定要用if k in [...]来过滤出你需要的变量名,避免混入不必要的内容。

方案4:使用inspect模块(适合函数内的局部变量)

如果这些变量是定义在函数内部的局部变量,用inspect模块可以更安全地获取局部命名空间:

import inspect

def build_data_dict():
    a = 1
    b = 45
    c = 73
    d = "foo"
    e = "bar"
    f = 90
    g = "banana"
    variables = [a, b, c, d, e, f, g]
    
    # 获取当前函数的局部命名空间
    local_vars = inspect.currentframe().f_locals
    # 筛选出目标变量
    return {k: local_vars[k] for k in ["a", "b", "c", "d", "e", "f", "g"]}

data = build_data_dict()

这种方法不需要担心全局变量的干扰,适合在函数内部处理局部变量的场景。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 22:47:35