Python sympy collect返回dict,无法使用密钥访问

Python sympy collect返回dict,无法使用密钥访问,python,dictionary,sympy,Python,Dictionary,Sympy,我正在使用Collect函数来分离一些术语。 它返回一个Dict,我无法使用给定的密钥访问它。下面是一个例子: import sympy as sp t = sp.Symbol('t') K1,K2,K3,K4 = sp.symbols("K1 K2 K3 K4") W,R,L,C = sp.symbols("omega R L C") Vi_t = 10*sp.cos(W*t) Vi_yp_t = (1/L)*sp.diff(Vi_t,t) Yp = K3*sp.cos(W*t)+K4*sp.

我正在使用Collect函数来分离一些术语。 它返回一个Dict,我无法使用给定的密钥访问它。下面是一个例子:

import sympy as sp
t = sp.Symbol('t')
K1,K2,K3,K4 = sp.symbols("K1 K2 K3 K4")
W,R,L,C = sp.symbols("omega R L C")
Vi_t = 10*sp.cos(W*t)
Vi_yp_t = (1/L)*sp.diff(Vi_t,t)
Yp = K3*sp.cos(W*t)+K4*sp.sin(W*t)
dYp = sp.diff(Yp,t)
d2Yp = sp.diff(dYp,t)
malha = d2Yp +(R/L)*dYp + (1/L*C)*Yp
malha_separada = sp.collect(malha,(sp.sin(W*t),sp.cos(W*t)),evaluate=False)
打印此文件将提供:

我可以使用malha_separada[1]访问键“1”,但我使用sin(ω*t)进行的任何尝试都会导致键错误。 符号,W,/omega。。。 有什么想法吗?

你必须使用
sp.cos(W*t)
sp.sin(W*t)

输出:

C*(K3*cos(omega*t) + K4*sin(omega*t))/L + R*(-K3*omega*sin(omega*t) + K4*omega*cos(omega*t))/L
-K3*omega**2
-K4*omega**2

这很有效,谢谢你。我发誓我在问之前就这么做了,一定是打错了。
C*(K3*cos(omega*t) + K4*sin(omega*t))/L + R*(-K3*omega*sin(omega*t) + K4*omega*cos(omega*t))/L
-K3*omega**2
-K4*omega**2