让我们假设以下对象:

class Test:
    id1 = ""
    id2 = ""
    id3 = ""

    def __init__(self,arg1,arg2,arg3):
        self.id1 = arg1
        self.id2 = arg2
        self.id3 = arg3


可以看出,该类必须包含3个唯一的ID。

t = []
t.append(Test(200,201,193))
t.append(Test(403,221,213))
t.append(Test(3,523,2003))


假设上面的代码,对我而言,在列表t中找到id1 = 403,id2 = 221和id3 = 213的对象最简单的方法是什么?

提前致谢。

最佳答案

使用迭代进行比较。

matches = [i for i in t if i.id1 == id1 and i.id2 == id2 and i.id3 == id3]


如果您知道它在那里并且只有一个,则可以这样进行:

match = next(i for i in t if i.id1 == id1 and i.id2 == id2 and i.id3 == id3)


但是请注意,如果没有这样的项目,它将提高StopIteration。不过,next可以采用默认值,因此,如果不确定它是否存在,可以指定默认值:

match = next((i for i in t if i.id1 == id1 and i.id2 == id2 and i.id3 == id3), None)

关于python - 在Python中的对象列表中搜索,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9511491/

10-13 05:48