将"variable variables"分配给目录



我想将以下变量名称分配给一个目录,以便稍后操作。思路如下:

data_1= fits.getdata(.....)
data_2= fits.getdata(.....)
data_3= fits.getdata(.....)

。.

N=10
d={}
for i in range(N):
d['data_'+ str(i)] = data_i

是否有一种方法可以以类似的方式调用变量?

我已经编写了一个工作解决方案(请参阅我在代码中的注释,以便更好地理解)。但是你必须注意在Python中使用eval函数,它是相当危险的。

代码:

data_1 = 1
data_2 = 2
data_3 = 3
N=10
d={}
for i in range(N):
try:
# IT DANGEROUS TO USE EVAL FUNCTION.
d['data_{}'.format(i)] = eval('data_{}'.format(i))
except NameError:
# Cannot set the variable in the dict. Get next element of loop.
pass
# Testing statements...
print(d["data_1"])
print(d["data_3"])
print(d["data_2"] + d["data_3"])

输出:

>>> python3 test.py 
1
3
5

最新更新