python 有没有可能把一个字符串改成一个已经存在的数组名

h4cxqtbf  于 2023-03-28  发布在  Python
关注(0)|答案(2)|浏览(105)

我已经生成了一组名为e_time,calc_time和p_time的数组,以及具有以下结构的数组e_hilat['pCO2 '],calc_hilat ['pCO2'],p_hilat['pCO2']等等,对于lolat和deep也是如此。(hilat,lolat和deep)(e,计算,然而,我并没有复制和粘贴每个plot命令,而是在想是否有一种聪明的方法可以使用for循环来绘制这些命令我试着把“e_”和“hilat['pCO2']"连接起来,但是结果是一个字符串,而不是一个叫做e_hilat['pCO2']的数组,有没有办法让代码把结果字符串识别为数组的名字?

fig, axS = plt.subplot_mosaic([['a)', 'a)'], ['b)', 'b)']], figsize=(10, 10), sharex=True)

linestyle = ['-', '--', ':']

for i, box in enumerate([hilat, lolat, atmos]):
box\['colour'] = 'C'+str(i)

print(hilat['colour'])

for i, scenario in enumerate(['e_', 'calc_', 'p_']):
  for box in [hilat, lolat, atmos\]:
    axS\['a)'].plot(time, 'e_'+{box}['pCO2'], ls=linestyle[i], c=box['colour'], label='original')

这是我现在的代码。
请随意建议任何其他可能的方法,唯一真正重要的部分是用于绘制每个场景的线条颜色对于每个框都是相同的(即,因此lolat的图总是蓝色的),并且每个场景的线条样式都是相同的(即,':'用于计算)。

hgb9j2n6

hgb9j2n61#

注解建议使用字典。例如,您可以使用名为e_hilat的数组,而不是名为e的字典,其中存储数组值的键为hilat。这将给予您与当前值对应:

e = { 'hilat': e_hilat, 'lolat': e_lolat, 'deep': e_deep }

对于calcp,使用类似的字典。然而,在这一点上,我倾向于对该轴做同样的事情,所以它都在一个嵌套的数据结构中:

data = { 'e': { 'hilat': e_hilat, 'lolat': e_lolat, 'deep': e_deep },
         'calc': { 'hilat': calc_hilat, 'lolat': calc_lolat, 'deep': calc_deep }, 
         'p': { 'hilat': p_hilat, 'lolat': p_lolat, 'deep': p_deep } }

然后你可以从data[scenario][box]['pCO2']中得到任何值,或者将它重新排列成data[box][scenario]更有意义;取决于你的情况。
需要明确的是,我不会像您现在在单独的数组中构造它,然后使用上面的赋值来构建dict;这只是显示了对应关系,我会把所有的东西都放在dict结构中。

n3h0vuf2

n3h0vuf22#

注意:请注意使用这种方法的缺点,如注解中所述。如果这是生产代码,您应该理想地使用字典,但如果您需要在运行实验时快速绘制图表,您可以使用我提供的方法(例如在ipynb中)。
有一种方法可以直接使用Python中的字符串访问全局命名空间变量,如下所示:

variable_name_str = "variable_name"

globals().get(variable_name_str)

或者你可以直接将字符串作为一个python表达式来计算,比如:

eval(variable_name_str)

相关问题