从python中的最小迭代中获取另一个列表中的列表

时间:2013-07-25 10:41:46

标签: python python-2.7 iteration

我有一个列表(Let A),其中包含对象列表,每个对象包含属性说nameidid值存储在数据库中。在特定位置我现在我有ID列表(设B)我希望列表'A'中的那些对象在列表'B'中有id 通过使用简单的迭代,我可以从列表A中获取这些对象。(这可能会导致更多的迭代) 我希望减少迭代次数,因为我的两个列表在每个

中都有超过1000个值
for clildB in B:
            for childA in A:
                #   MYCODE

2 个答案:

答案 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]