如何通过变量的值获取名称

时间:2018-08-08 05:30:16

标签: python

我希望能够生成一个包含变量值和变量名的字典。因此,我还必须通过变量的值来获取变量的名称。

例如, 有一个名为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'}

2 个答案:

答案 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()返回作用域中所有局部变量的列表。

希望有帮助。