我有這樣的代碼:迭代字典具有列表時作爲值
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
機能的研究,以檢查是否我有一個列表,然後添加一個循環。
我只是想通過快譯通迭代,是這樣的:它
for k, v in thevalues.items():
for i in v:
print(myclass('c + d',.......).execute())
我想想也許你想把它變成一個類似於'[{'c':1,'d':3},{'c':2,'d':4}]'的字典列表?那麼'map(dict,(zip(values.keys(),v)for zip in zip(* values.values())))'給你列表,然後迭代並將每個值傳遞給你類+執行功能。 –
@PaulRooney:謝謝你,這個想法,這也可以。 – George