python检查对象是否在对象列表中

时间:2015-05-17 11:36:07

标签: python

我正在尝试检查我的某个对象是否在对象列表中,

我希望不进入嵌套循环。

我有一个类型为X的对象,字段类型为W,E,R。

我还有一个X类型的对象列表。

我的问题是 - 如果我会问,(myobj in L)

如果列表中有X类型的对象,它会返回True,还是

仅当L中存在类型为X的对象时才返回True,具有相同的W,E,R

myobj的

=======================编辑:====================== ================

我第一次运行上面的代码(即L中的obj),

for log in logs[first_users[0]]:
    self.assertTrue(log in first_users[0].get_log())

对于上面的代码我收到一个错误,因为我有一个不在

的日志

first_users [0] .get_log()(一个对象不同)

然后我跑了:

for log in first_users[0].get_log():
        self.assertTrue(log in logs[first_users[0]])

我没有得到任何错误 - 这很好。

我甚至尝试更改日志中的特定对象:

for log in first_users[0].get_log():
    log.obj = None
    log.save()
    self.assertTrue(log in logs[first_users[0]])

它仍然没有通过错误 - 这是不好的

1 个答案:

答案 0 :(得分:1)

浏览this。它是关于类中运算符重载的页面。找到你需要的功能!

编辑:您需要实现__eq__来检查两个对象的成员是否相等。 例如:

class Foo:
    def __init__(self, val):
        self.val = val
    def __eq__(self, other):
        if self.val == other.val:
            return True
        return False

l = [Foo(i) for i in range(10)]
print(Foo(2) in l)
print(Foo(100) in l)

输出:

True
False

您可以选择不检查所有成员,只比较与您有关的成员。