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

Python如何获取嵌套列表中存储的子列表对应的原变量名?

这个需求可以实现,但你原本的写法无法直接达成,原因是Python中的列表存储的是元素对象的内存引用,不会保留变量名这类标识信息,变量名本身只是绑定对象的临时标签,存入列表后就和原名称脱离关联了。

方案1:使用字典存储(最推荐)

把变量名作为键,对应列表作为值,既可以保留名称标识,也能正常存取列表内容:

area = ["A","B","C"]
level = ["L1","L2","L3"]

sector = {
    "area": area,
    "level": level
}

# 输出所有嵌套列表内容,和你原来的输出逻辑对应
print(list(sector.values()))
# 输出第二个元素对应的变量名,也就是你要的 level
print(list(sector.keys())[1])
# 如果要取对应列表内容,调用 sector["level"] 即可

方案2:用列表嵌套元组存储

如果你一定要保持列表的顺序索引特性,可以把名称和列表打包成元组存入:

area = ["A","B","C"]
level = ["L1","L2","L3"]

sector = [("area", area), ("level", level)]

# 第一次输出和你原需求的嵌套列表结果一致
print([item[1] for item in sector])
# 第二次输出对应的变量名 level
print(sector[1][0])
# 取对应列表内容调用 sector[1][1] 即可

不推荐的硬取变量名方案

如果你不想修改原有存储结构,可以通过遍历全局变量匹配对象的方式获取变量名,但该方案非常不稳定,存在多个变量指向同一个列表时会返回错误结果、作用域变更后失效等问题,仅做参考:

area = ["A","B","C"]
level = ["L1","L2","L3"]
sector = [area, level]

def get_var_name(obj):
    for name, val in globals().items():
        if val is obj:
            return name

print(sector)
print(get_var_name(sector[1]))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 16:06:03