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

Python字典查询时如何获取值对应的原变量名称

可行实现方案

方案1:直接修改字典存储内容(最简单推荐)

如果你不需要在这个字典中保留原字符串值,直接把字典的值存为变量名的字符串即可:

AMTVALUE1 = "string 1"
AMTVALUE2 = "string 2"

all_templates = {
    "amt": "AMTVALUE1",
    "cmvb": "AMTVALUE2",    
}

此时执行all_templates["amt"]就会直接返回AMTVALUE1,完全符合需求。如果后续需要用到对应的原字符串值,可以通过globals()[all_templates["amt"]]获取到string 1。

方案2:字典值存元组,同时保留变量名和原字符串

如果你需要同时使用变量名和原字符串值,可以把值存为二元组,再写辅助函数分别取对应内容:

AMTVALUE1 = "string 1"
AMTVALUE2 = "string 2"

all_templates = {
    "amt": ("AMTVALUE1", AMTVALUE1),
    "cmvb": ("AMTVALUE2", AMTVALUE2),    
}

# 获取变量名
def get_var_name(key):
    return all_templates[key][0]

# 获取原字符串值
def get_str_value(key):
    return all_templates[key][1]

调用示例:

  • get_var_name("amt") 返回 AMTVALUE1
  • get_str_value("amt") 返回 string 1

方案3:自动反向查找变量名(不推荐,有局限性)

如果不想手动写变量名字符串,可以通过全局变量字典反向匹配,但如果存在多个变量值完全相同的情况,会出现匹配错误的问题,仅适合变量值全局唯一的场景:

AMTVALUE1 = "string 1"
AMTVALUE2 = "string 2"

all_templates = {
    "amt": AMTVALUE1,
    "cmvb": AMTVALUE2,    
}

def get_var_name(key):
    target_value = all_templates[key]
    for var_name, var_value in globals().items():
        if var_value == target_value and not var_name.startswith('_'):
            return var_name
    return None

调用get_var_name("amt")可返回AMTVALUE1

注意:该方法在出现同值变量时会返回第一个匹配到的变量名,结果不可控,非特殊场景不建议使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 00:24:04