我希望能够生成一个包含变量值和变量名的字典。因此,我还必须通过变量的值来获取变量的名称。
例如, 有一个名为my_list的列表。
my_list = ["foo", "egg"]
然后有这样的变量。
foo = "What the foo"
egg = "My egg is big"
最后,我尝试了以下代码:
def return_string(name):
return name
GetNameFromStr = {}
for i in range(len(my_list)):
GetNameFromStr[exec("return_string(my_list[i])")] = my_list[i]
print(GetNameFromStr)
但这对我不起作用。
输出:
{'foo': 'foo', 'egg': 'egg'}
。
这是我想要的字典:
{'What the foo': 'foo', 'My egg is big': 'egg'}
答案 0 :(得分:2)
如果变量是全局变量,请使用globals()
,
my_list = ["foo", "egg"]
foo = "What the foo"
egg = "My egg is big"
print({globals()[x]: x for x in my_list})
# {'What the foo': 'foo', 'My egg is big': 'egg'}
答案 1 :(得分:1)
您可以这样做:
ALL_LEAF_TYPES = ["foo", "egg"]
foo = "What the foo"
egg = "My egg is big"
def return_string(name):
return name
GetNameFromStr ={}
for i in range(len(ALL_LEAF_TYPES)):
GetNameFromStr[locals()[ALL_LEAF_TYPES[i]]] = ALL_LEAF_TYPES[i]
print GetNameFromStr
local()
返回作用域中所有局部变量的列表。
希望有帮助。