我可以通过求解这些方程式获得字典列表吗? (Python)

Can I have a list of dictionaries from solving these equations? (Python)

这是我正在处理的部分代码:

delta, beta, gamma = symbols('delta beta gamma')
eq1 = Eq(tan((delta+beta)/2),nz*tan(theta/2))
eq2 = Eq(tan((delta-beta)/2),nx/ny)
eq3 = Eq(cos(gamma/2),cos(theta/2)/cos((delta+beta)/2))
result = solve([eq1, eq2, eq3], [delta, beta,gamma])

给出所有参数:

theta = -1.2974951599797855
nx = - 0.280639152149670
ny = 0.546816938693111
nz = 0.788817407160244

没有等式 3,输出如下:

{delta: -1.01319515173894, beta: -0.0648548698337719}

由于 gamma 有两个值,使用等式 3,输出变为

[(-1.01319515173894, -0.0648548698337719, 0.760927675576123), 
(-1.01319515173894, -0.0648548698337719, 11.8054429387830)]

关于这个结果我有两个问题:首先,有没有办法让输出看起来像一个包含两个字典的列表?如:

[{delta: -1.01319515173894, beta: -0.0648548698337719, gamma: 0.760927675576123}, 
{delta:-1.01319515173894, beta: -0.0648548698337719, gamma: 11.8054429387830}]

此外,通过使用 solve,我应该只获得主要的 angular 值吗?我想知道是否可以让 gamma 的第二个值是 -0.760927675576123,而不是 11.8054429387830.

非常感谢您的帮助:)

这是将元组列表转换为字典列表的方法。要固定 -pi 和 pi 之间的间隔,您可以在输出中获得的每个角度上使用 math.remainder(radian, tau)(其中 tau 是 2pi)。

from math import remainder, tau

#Output radians
output = [(-1.01319515173894, -0.0648548698337719, 0.760927675576123), 
          (-1.01319515173894, -0.0648548698337719, 11.8054429387830)]

#Fix intervals between -pi and pi
fix_interval = [[remainder(j, tau) for j in i] for i in output]

#Convert to dictionary
dict_output = [{'delta':i,'beta':j,'gamma':k} for i,j,k in fix_interval]
dict_output
[{'delta': -1.01319515173894,
  'beta': -0.0648548698337719,
  'gamma': 0.760927675576123},
 {'delta': -1.01319515173894,
  'beta': -0.0648548698337719,
  'gamma': -0.7609276755761716}]

当然,您可以一步完成所有操作,但我已尝试将其作为一个单独的步骤,以便您更容易理解其工作原理。