如何将变量名提取为列表中的字符串?

2024-04-19 07:50:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图将变量名提取为字符串。我定义了两个变量CurrentField和PreviousField,并希望将这些名称提取为字符串,以便在代码中的其他地方使用。你知道吗

CurrentField = ['One', 'Two']
PreviousField = ['One0', 'Two0']

def Updatedict(varname):
    callers_local_vars = inspect.currentframe().f_back.f_locals.items()
    stringvar = [k for k, v in callers_local_vars if v is varname][0]
    return stringvar

listofvars = [CurrentField, PreviousField]

ParameterDict = [Updatedict(keyname) for keyname in listofvars]

ParameterDict

我得到的只是一个列表,上面写着['keyname','keyname'],我要找的是['CurrentField','PreviousField']。你知道吗

如何获得所需的输出?你知道吗

提前多谢了。你知道吗


Tags: 字符串infor定义localvarscallersvarname
2条回答

错误的是你的循环,试试这个(适用于python3.6,根据F string prefix in python giving a syntax error) 地址:


In [23]: my_dict = {}
    ...: i = 0
    ...: for var in listofvars:
    ...:     my_dict.update({f"var_{i}":Updatedict(var)[0]})
    ...:     i += 1

In [24]: my_dict
Out[24]: {'var_0': 'CurrentField', 'var_1': 'PreviousField'}

顺便说一下,函数应该是小写的,变量名也是如此,python类应该是大写的

如果您使用的是以前版本的Python,因为上述代码适用于Python3.6以后的版本,请使用以下代码:

my_dict = {}
i = 0
for var in listofvars:
    my_dict.update({"var_%s" %i : Updatedict(var)})
    i += 1

my_dict

相关问题 更多 >