我在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)
答案 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]