我有这段代码:
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())
答案 0 :(得分:0)
将其视为字典中的嵌套列表。 localField
将评估为1,values['c'][0]
将评估为2。
所以你可以:
values['c'][1]
答案 1 :(得分:0)
一种解决方案可能是:
# 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]