试图查找字符串是否在对象列表中

Mar*_*ark 1 python

我不确定这是否可能因为在线查找和回答有困难,可能因为我不知道必须解决这个问题.所以下面的代码是我想要做的基本例子.

class Names():
    def __init__(self, name):
        self.name = name
    def __repr__(self):
        return self.name

>>> i = []
>>> i.append(Names("bob"))
>>> i.append(Names("jill"))
>>> i
[bob, jill]
>>> "bob" in i
False
Run Code Online (Sandbox Code Playgroud)

我有一个Name类的列表,如果名称已存在,则返回True.如果知道如何让这个工作?

Dan*_*man 9

有几种方法可以做到这一点.

最简单的方法是迭代any:

any(item.name == 'bob' for item in i)
Run Code Online (Sandbox Code Playgroud)

更复杂的版本是__eq__在您的类上定义一个方法:

def __eq__(self, val):
    return self.name == val
Run Code Online (Sandbox Code Playgroud)

现在您的原始"bob" in i代码将起作用.

(对于实际代码,如果你在名字的两个实例之间而不是字符串,你可能想要检查该方法.)