在python中,您可以检查项目是否在列表中:
if item in lst:
do_stuff()
但是,如何检查LIKE项目是否在列表中? is
运算符检查实际对象。 in
运算符也是如此。 ==
是否有in
的等效运算符?
我想要的是
if item is_equal_to_another_in lst:
do_stuff()
例如:我有一个[item('a'), item('b'), item('c')]
列表。如果我创建另一个item('a')
,它将与我们列表中的那个完全相同,除非它会使in
语句失败,因为列表中的那个是不同的实例。
答案 0 :(得分:4)
对于列表,__contains__
只是将对象与__eq__
(==
)运算符进行比较。如果没有定义,它会落到is
。
您可能必须根据__eq__
为您的具体平等定义items
。
在此示例中,我演示了如何通过执行不区分大小写的比较,根据attr
属性的值比较两个项目。
>>> class item:
... def __init__(self,attr): self.attr = attr
... def __eq__(self,o): return isinstance(o, item) and self.attr.lower() == o.attr.lower()
...
>>> lst = [item("a"), item("b")]
>>> item("A") in lst
True
>>> item("a") in lst
True
>>> item("B") in lst
True
>>> item("C") in lst
False
>>> "A" in lst
False