因为我在mysql数据库中保存了一些规则。
WelcomePage := CreateCustomPage(wpSelectTasks, '', '');
然后,我想使用相关的规则运算符过滤数据列表,如下所示的代码
+----+---------+-------+----------+-------+-------+
| id | rule_id | field | operator | value | order |
+----+---------+-------+----------+-------+-------+
| 1 | 1 | 5 | 2 | 8 | 1 |
| 2 | 1 | 10 | 2 | 2 | 2 |
| 3 | 1 | 4 | 2 | 1 | 3 |
...
# operator 2 is equal to GREATER_THAN for example
是否可以使用类似地图的关系
operator = "LESS_THAN" # get from mysql db
target_value = 8
list1 = [{'clicks':5, "views":7, 'id':1234}, {'clicks':5, "views":9, 'id':1235}]
filtered_list = [i['id'] for i in filter(lambda item: item['views'] > target_value, list1)]
# filter the list according to operator > ,target_value 8 for example.
要使下面的内容类似于operation_map = {
"LESS_THAN" : <,
"GREATER_THAN": >,
"EQUAL":=
}
语法?
if operator == 'GREATER_THAN' : pass
任何帮助或见识将不胜感激,谢谢。
答案 0 :(得分:1)
使用operator
module:
import operator
operator_map = {'LESS_THAN': operator.lt,
'GREATER_THAN': operator.gt,
'EQUAL': operator.eq}
filtered_list = [i['id'] for i in filter(lambda item: operator_map[operator](item['views'], target_value), list1)]
根据需要添加其他运算符。