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
相关产品推荐
相关产品推荐

