我有一个列表(Let A),其中包含对象列表,每个对象包含属性说name
,id
和id
值存储在数据库中。在特定位置我现在我有ID列表(设B)我希望列表'A'中的那些对象在列表'B'中有id
通过使用简单的迭代,我可以从列表A中获取这些对象。(这可能会导致更多的迭代)
我希望减少迭代次数,因为我的两个列表在每个
for clildB in B:
for childA in A:
# MYCODE
答案 0 :(得分:3)
将O(n * m)(二次)代码转换为O(n + m)(线性):
ids = set(B)
L = [obj for obj in A if obj.id in ids]
item in a_set
operation has O(1) (constant) time complexity (average case),其中a_set
是一组。将其与具有O(n)时间复杂度的item in a_list
进行比较,其中a_list
是列表。
答案 1 :(得分:0)
idADic = {o['id']:o for o in A}
[idADic.get(o['id']) for o in B]