Преобразовать имя(название) переменной в строку(str)
Есть список с переменными. Например, одна из них называется model_xgb, при применении обертки str, получаю это:
LGBMRegressor(bagging_fraction=0.8,...{много букв и символов} .... subsample_for_bin=200000", subsample_freq=0)
Мне нужно, чтобы ее имя - model_xgb, а не содержание, преобразовать в строку.
Как это сделать?
Ответы (2 шт):
Автор решения: Zhihar
→ Ссылка
попробуйте так:
# функция перевода имени переменной в строку
def var2str(var, vars_data = locals()):
return [var_name for var_name in vars_data if id(var) == id(vars_data[var_name])]
# проверка работы функции на локальных переменных
def test():
your_variable = "test"
for index in range(1):
print(var2str(index, locals()))
# проверка работы функции на глобальных переменных
my_variabe = 1
test()
print(var2str(my_variabe))
если нужны только глобальные:
def var2str(variable):
return [global_var for global_var in globals() if id(variable) == id(globals()[global_var])]
my_variabe = 1
your_variable = "test"
print(var2str(my_variabe))
можно еще так:
import varname
my_variabe = 1
your_variable = "test"
print(varname.nameof(my_variabe))
но у меня не установлен модуль varname, чтобы проверить код :(
Автор решения: Sergey Svetloff
→ Ссылка
Нашел, как сделать:
poisson_glm[-1].__class__.__name__
"poisson_glm" - переменная. Вызывали ее из списка:
model = [ridge_glm, poisson_glm, poisson_gbrt]
Я похоже, не совсем, правильно задал вопрос. Сорри, начинающий питонер:)