Python 是否可以使用运算符映射自动生成指定的运算符?
因为我在mysql数据库中保存了一些规则Python 是否可以使用运算符映射自动生成指定的运算符?,python,dictionary,operators,Python,Dictionary,Operators,因为我在mysql数据库中保存了一些规则 +----+---------+-------+----------+-------+-------+ | id | rule_id | field | operator | value | order | +----+---------+-------+----------+-------+-------+ | 1 | 1 | 5 | 2 | 8 | 1 | | 2 | 1 |
+----+---------+-------+----------+-------+-------+
| 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=“小于”#从mysql数据库获取
目标值=8
列表1=[{'clicks':5,“视图”:7,'id':1234},{'clicks':5,“视图”:9,'id':1235}]
filtered_list=[i['id']表示过滤器中的i(lambda项:项['views']>目标_值,列表1)]
#根据运算符>,例如目标值8筛选列表。
可以使用像这样的映射关系吗
操作\u映射={
“少于”:,
“平等”:=
}
如果运算符==“大于”:pass语法,则要使下面的内容发生,而不是if operator==“大于”:pass
语法
filtered_list=[i['id']用于过滤器中的i(lambda项:项['views']操作_映射[operator]目标_值,列表1)]
任何帮助或见解都将不胜感激,非常感谢。请使用
操作员
:
根据需要添加其他运算符。为什么要这样做?运算符更具可读性,如果您的类对象已经实现了它们,您可以只使用lambda函数对它们进行排序。
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)]