R 的 eval(parse(text=text)) 等价于 Python
R's eval(parse(text=text)) equivalent in Python
我正在寻找一种使用 Python 中的循环和函数动态分配变量的方法。我在 R 中可以这样做的一种方法是使用 eval(parse(text=text))
。例如,假设我有这个代码:
var <- c('First','Second','Third')
for (i in 1:length(var)){
text <- paste0("Variable_", var[i], " <- ", i)
eval(parse(text = text))
}
我想要的输出如下:
> Variable_First
[1] 1
> Variable_Second
[1] 2
> Variable_Third
[1] 3
在Python中这样做的等效方法是什么?
提前致谢!
使用dictionaries to accomplish something similar: "variable" variables in a restricted namespace. For example, here a dictionary comprehension用于赋值给字典dct
:
lst = ['First','Second','Third']
dct = {f'Variable_{s}': i for i, s in enumerate(lst)}
print(dct)
# {'Variable_First': 0, 'Variable_Second': 1, 'Variable_Third': 2}
好吧,如果你真的想这样做,你可以用与 exec
几乎相同的方法来完成。虽然这可能不是最好的做法...
var = ["First", "Second", "Third"]
for i, j in enumerate(var, start=1):
exec(f"Variable_{j} = i")
给予
>>> Variable_First
1
>>> Variable_Second
2
>>> Variable_Third
3
我正在寻找一种使用 Python 中的循环和函数动态分配变量的方法。我在 R 中可以这样做的一种方法是使用 eval(parse(text=text))
。例如,假设我有这个代码:
var <- c('First','Second','Third')
for (i in 1:length(var)){
text <- paste0("Variable_", var[i], " <- ", i)
eval(parse(text = text))
}
我想要的输出如下:
> Variable_First
[1] 1
> Variable_Second
[1] 2
> Variable_Third
[1] 3
在Python中这样做的等效方法是什么?
提前致谢!
使用dictionaries to accomplish something similar: "variable" variables in a restricted namespace. For example, here a dictionary comprehension用于赋值给字典dct
:
lst = ['First','Second','Third']
dct = {f'Variable_{s}': i for i, s in enumerate(lst)}
print(dct)
# {'Variable_First': 0, 'Variable_Second': 1, 'Variable_Third': 2}
好吧,如果你真的想这样做,你可以用与 exec
几乎相同的方法来完成。虽然这可能不是最好的做法...
var = ["First", "Second", "Third"]
for i, j in enumerate(var, start=1):
exec(f"Variable_{j} = i")
给予
>>> Variable_First
1
>>> Variable_Second
2
>>> Variable_Third
3