2013-03-01 24 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

相关问题