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

Python如何基于变量列表生成键为变量名的字典?

解决方法

首先看你出错的原因:你应该是写了类似这样的错误代码:

a = 1
b = 2
c = 3
my_list = [a, b, c]
my_dict = {'item': item for item in my_list}

这段代码里,字典推导式的键是固定字符串'item',每次循环都会覆盖这个键对应的值,最后只剩列表最后一个元素的值3,所以得到{'item': 3}。

要实现键为变量名、值为变量内容的字典,有两种实用方法:

方法1:显式存储变量名与值的对应关系

直接把变量名(字符串形式)和对应值组成元组存入列表,再通过推导式生成字典:

a = 1
b = 2
c = 3
# 元组里第一个元素是变量名字符串,第二个是变量值
var_pairs = [('a', a), ('b', b), ('c', c)]
my_dict = {key: val for key, val in var_pairs}
print(my_dict)  # 输出 {'a': 1, 'b': 2, 'c': 3}

如果不需要推导式,直接用dict(var_pairs)也能得到相同结果,更简洁。

方法2:利用命名空间批量获取变量

如果需要批量处理多个变量,可以从当前局部/全局命名空间中筛选指定变量:

a = 1
b = 2
c = 3
# 从局部命名空间中筛选出指定变量名的键值对
my_dict = {k: v for k, v in locals().items() if k in {'a', 'b', 'c'}}
print(my_dict)  # 输出 {'a': 1, 'b': 2, 'c': 3}

注意:如果在函数外部使用,locals()和globals()效果一致;如果在函数内部,优先用locals()获取函数内的变量。这种方式要确保筛选的变量名准确,避免混入其他无关变量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 09:02:58