2013-03-01 52 views
-1

我知道的eval()是這樣的事情是非常有用的:使用具有eval()函數的變量名的字典

x = 3 
y = 2 
myformula = "x + y" 
print eval(myformula) 
>>> 5 

但是,如果我不想硬編碼變量名和值,而是用什麼一本字典?

mydict = {'x':3, 'y':2, 'z':5} 
myformula = "x + y + z" 
print eval(myformula) 
>>> 10 
or, 
mydict = {'a':100, 'b':10, 'c':1} 
myformula = "(a * b) - c" 
print eval(myformula) 
>>> 999 

我擡頭如何分配給一個變量,變量,但我不能與其他的答案適用於我的問題。我仍然想保留myformula字符串的符號。任何幫助,將不勝感激。

謝謝。

保羅
芝加哥,伊利諾伊

+1

使用'mydict ['a'] * mydict ['b'] - mydict ['c']''有什麼問題? – 2013-03-01 07:44:32

+0

你到底需要什麼? – Blender 2013-03-01 07:49:28

+0

我想這樣做,因爲我有一個txt文件,其中有變量名稱和值。我提取這些變量名稱和值,然後應用任何我想要使用eval()的公式。謝謝你的幫助。 – Paul 2013-03-01 19:31:51

回答

4

這是第二個和第三個參數eval是什麼(閱讀the documentation):

>>> d = {'x':3, 'y':2, 'z':5} 
>>> eval("x + y + z", d) 
    10 

請注意eval uating任意用戶輸入是不是安全(認爲​​rm -Rf /)。躲開它。

+0

我知道這會很簡單。謝謝!! – Paul 2013-03-01 19:30:05

相關問題