我正在尝试编写一个Python脚本,它接受一个条件字符串列表,将其与字典中的值进行比较,并在满足条件时执行(或者抛出错误消息)
下面给出了标准列表和字典值的示例:
criteria_list = ['A < 5', 'B == 6', '3 < C < 4']
dict = {'A': 3, 'B': 6, 'C': 3.5, 'D': 5, 'E': 100}
我最初的想法是通过检查标准值是否在字典中,加载字典中与标准相关的值。然后,我可以检查该值是否满足条件,然后执行代码。如果条件值不在字典中,则抛出一个错误(即,条件列表=[…,“Z==10”,…]>;抛出一个Z不在字典中的错误)
这就是我现在所拥有的,但是我很难找到一种方法来本地保存键值,以使用eval(条件)来检查条件是否为真
crit_sum = 0
for criteria in criteria_list:
for key in dict.keys():
if (key in criteria.split()):
#SAVE KEY VALUE (i.e. A = 3)
if eval(criteria):
crit_sum += 1
elif (key not in critera.split()):
print("criteria not in dictionary!")
if crit_sum == len(criteria_list): #execute code if all criteria are TRUE
#EXECUTE CODE
让我知道您认为在本地保存值的好方法是什么,或者是评估任意大小的标准列表的另一种方法
我假设你知道why not to use ^{} 。但是,如果仍然希望这样做,可以将空dict传递给
globals
参数,并将dict传递给eval()
的locals
参数。例如:或者,使用生成器表达式时:
当表达式使用
all_vars
(例如X == 100
)中不存在的变量时,您将得到一个NameError: name 'X' is not defined
,如果愿意,可以捕获并处理该变量相关问题 更多 >
编程相关推荐