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

如何快速将Python变量转为以变量名为键的字典?

两种场景下生成目标字典的方法

场景1:从独立变量生成字典

如果是少量变量,最直接快速的方式就是手动构造字典字面量:

foo = 1
bar = 2
baz = 3
mydict = {'foo': foo, 'bar': bar, 'baz': baz}

要是变量数量较多,不想逐个编写,可以借助当前作用域的变量集合筛选:

# 筛选局部作用域中指定名称的变量
mydict = {k: v for k, v in locals().items() if k in ('foo', 'bar', 'baz')}

场景2:从变量值列表生成字典

注意:mylist = [foo, bar, baz]里仅存储了变量的值,没有保留变量名信息,所以需要额外提供变量名的字符串列表来对应键值:

foo = 1
bar = 2
baz = 3
mylist = [foo, bar, baz]
# 定义对应变量名的键列表
keys = ['foo', 'bar', 'baz']
mydict = dict(zip(keys, mylist))

如果不想手动写键列表,也可以用inspect模块从作用域中匹配值对应的变量名(但要注意:如果多个变量值相同,会匹配到第一个出现的变量名,存在风险):

import inspect

foo = 1
bar = 2
baz = 3
mylist = [foo, bar, baz]

def get_var_names(value_list):
    frame = inspect.currentframe().f_back
    var_map = {}
    # 遍历作用域变量,避免值重复时覆盖
    for k, v in frame.f_locals.items():
        if v in value_list and k not in var_map:
            var_map[v] = k
    return [var_map[v] for v in value_list]

mydict = dict(zip(get_var_names(mylist), mylist))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 16:41:32