假设我有一个具有属性lst1
的对象列表from_id
。另外,我还有另一个列出lst2
个具有属性to_id
的对象列表。
我需要在lst1
lst2
找到from_id
中的每个对象(to_id
应该等于lst2
)。
lst1
最多只能有一个对象(零或一个)与Fatal error: Uncaught Doctrine\ORM\Query\QueryException: SELECT DAY(h.date) AS day FROM Entities\Hit h GROUP BY day in
中的给定对象相对应。
在python中实现它的最快方法是什么?
答案 0 :(得分:0)
使用设置;因为它的工作方式就像没有键的dict(只是值)。首先将列表转换为集合。
lst1 = set(lst1)
lst2 = set(lst2)
res = [(obj, to_obj) for obj in lst1 for to_obj in lst2 if obj.from_id == to_obj.to_id]
这可以打破
result = []
for obj in lst1:
for to_obj in lst2:
if obj.from_id == to_obj.to_id:
result.append((obj, to_obj))
break
这将以元组列表结束。 较长的版本会破坏找到对象的内容,理解代码则不会。