迭代两个Python对象列表

时间:2015-03-22 00:20:09

标签: python list object iteration

我在Python中有两个很长的对象列表: queries_list(查询对象列表)和 results_list(结果对象列表)

我想使用公共字段“search_id”找到与查询相关的Result对象,然后我应该将相关结果附加到Query.results列表。

伪代码如下:

for q in  queries_list
   for r in results_list
       if q.search_id == r.search_id
           q.results.append(r)

2 个答案:

答案 0 :(得分:1)

您的伪代码几乎是python代码,但这里是使用filter的python变种。

for query in queries_list:
   hasQueryId = lambda result: result.search_id == query.search_id
   query.results.extend(filter(hasQueryId, results_list))

这会导致所有查询结果列表被填充。这仍然是O(m * n),如果您正在寻找更有效的方法我尝试按ID排序结果和查询。

答案 1 :(得分:1)

您的伪代码几乎是Python。你只是缺少冒​​号:

for q in queries_list:
   for r in results_list:
       if q.search_id == r.search_id:
           q.results.append(r)

这假设您的查询对象已具有results属性。

如果没有,您可以在运行时创建它们:

for q in queries_list:
   for r in results_list:
       if q.search_id == r.search_id:
           try:
               q.results.append(r)
           except AttributeError:
               q.results = [r]