Как извлечь имя переменной в виде строки в понимании списка? - PullRequest
0 голосов
/ 31 января 2019

Я пытаюсь извлечь имя переменной в виде строки.Я определил две переменные 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'].

Как получить желаемый результат?

Заранее большое спасибо.

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019

Если вы используете предыдущую версию Python, так как приведенный выше код работает для Python 3.6 и выше, используйте этот код:

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

my_dict
0 голосов
/ 31 января 2019

Что не так в вашем цикле, попробуйте это (работает для Python 3.6 в соответствии с Строковый префикс F в python с ошибкой синтаксиса ):


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

...