Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 是否可以使用运算符映射自动生成指定的运算符?_Python_Dictionary_Operators - Fatal编程技术网

Python 是否可以使用运算符映射自动生成指定的运算符?

Python 是否可以使用运算符映射自动生成指定的运算符?,python,dictionary,operators,Python,Dictionary,Operators,因为我在mysql数据库中保存了一些规则 +----+---------+-------+----------+-------+-------+ | id | rule_id | field | operator | value | order | +----+---------+-------+----------+-------+-------+ | 1 | 1 | 5 | 2 | 8 | 1 | | 2 | 1 |

因为我在mysql数据库中保存了一些规则

+----+---------+-------+----------+-------+-------+
| 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)]