如何将字符串作为变量名赋值传递

Aji*_*yay 5 python variables dynamic variable-assignment

我有一个 SDF 数据文件,它以块格式存储变量名称及其值。

旁边的值是varNameList与 sdf 文件内的数据块相对应的变量(字符串)的名称,并且只能通过给出这些变量名称来访问它。

我在 ipython 中使用以下代码读取数据文件和变量

import sdf
import numpy as np
dataFile = sdf.read('0010.sdf')

varNameList = dir(dataFile)  
varSize = np.size(varNameList)  #gives the array size
vName = 'dataFile.'+np.str(varNameList[51])+'.data'
Run Code Online (Sandbox Code Playgroud)

变量名称的输出如下:

In [71]:varNameList[51]
Derived_Number_Density_electron

In [72]:vName
'dataFile.Derived_Number_Density_electron.data'
Run Code Online (Sandbox Code Playgroud)

现在,我希望在作业的右侧使用这个字符串,例如

electronDensity = dataFile.Derived_Number_Density_electron.data
Run Code Online (Sandbox Code Playgroud)

如果我在标准 Python 程序中编写这一行,它会读取数据并将其分配给 electroDensity。

然而,在我的模拟中,这些变量是动态创建的,并且可以使用dir()上面编写的命令找到它们的名称。我无法创建相当于的程序行

electronDensity = dataFile.Derived_Number_Density_electron.data
Run Code Online (Sandbox Code Playgroud)

Tom*_*zes 2

您可以使用evalPython 计算字符串中的表达式。这是一个简单的例子:

>>> x = 123
>>> y = "x"
>>> z = eval(y)
>>> 
>>> print z
123
Run Code Online (Sandbox Code Playgroud)

对于你的情况,你可以这样做:

electronDensity = eval(vName)
Run Code Online (Sandbox Code Playgroud)