我有这个代码:
import numpy as np
from sympy import sympify
class myclass():
def __init__(self, expression ='', values = {}):
self.expression = expression
self.values = values
def execute(self):
expr = sympify(self.expression)
for v in self.values:
expr = expr.subs(str(v),self.values[v])
self.result = expr.evalf()
return self.result
当以字典作为输入时执行表达式。
有了这个数据:
values = {'c':1, 'd':2}
print(myclass('c + d',values).execute())
我收到:3,这是正确的。
现在,当我拥有这些数据时有没有办法:
values = {'c':[1,2], 'd':[3,4]}
调用execute
并获取结果?注意,我不想execute
为了检查我是否有一个列表然后添加一个循环而改变功能。
我只想遍历 dict,例如:
for k, v in thevalues.items():
for i in v:
print(myclass('c + d',.......).execute())
一种解决方案可能是:
# assuming the length of the list for 'c' and 'd' is the same. calaculate the length of the list for 'c' or 'd'
for k, v in values.items():
length_of_values_list = len(v)
break
for i in range(length_of_values_list):
print [myclass('c+d', dict([(k,v[i]) for k, v in values.items()])).execute()]
结果是
[4.000]
[6.000]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句