python项目相当于列表中的另一个

时间:2014-08-19 22:29:49

标签: python python-2.7 python-3.x

在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语句失败,因为列表中的那个是不同的实例。

1 个答案:

答案 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