让我们假设以下对象:
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/