Python编程:如何从字典中评估值?

nkk*_*nak 2 python string dictionary eval

给定字符串

str=" dept_id == CS1  and  student_count > 75 " 
Run Code Online (Sandbox Code Playgroud)

字典

dict = {'dept_id': 'CS1' ,'student_count': 95 }
Run Code Online (Sandbox Code Playgroud)

我们需要在字符串中替换dict中的值并进行求值

eval (str)
Run Code Online (Sandbox Code Playgroud)

以下代码适用于所有整数情况:

for item in dict.items():
k , v  = item
if s.find(k) > -1:
 k=str(k)
 s=s.replace(k, str(v),1)
 print "replaced",s

print eval(s)
Run Code Online (Sandbox Code Playgroud)

有没有其他方法来解决这个问题?

fal*_*tru 6

eval接受可选字典(globals,locals).您无需手动替换字符串:

>>> s = "dept_id == 'CS1' and student_count > 75 "
>>> d = {'dept_id': 'CS1' ,'student_count': 95 }
>>> eval(s, d)
True
>>> d = {'dept_id': 'CS1' ,'student_count': 35 }
>>> eval(s, d)
False
Run Code Online (Sandbox Code Playgroud)

顺便说一句,使用str,dict作为变量名是不是一个好主意.他们将阴影内建函数/类型str,dict.