遍历Python中的两个对象列表
我在Python中有两个长长的对象列表: 查询列表(查询对象列表)和 结果列表(结果对象列表) 我想使用公共字段“search\u id”查找与查询相关的结果对象,然后我应该将相关结果附加到Query.results列表中 伪代码如下所示:遍历Python中的两个对象列表,python,list,object,iteration,Python,List,Object,Iteration,我在Python中有两个长长的对象列表: 查询列表(查询对象列表)和 结果列表(结果对象列表) 我想使用公共字段“search\u id”查找与查询相关的结果对象,然后我应该将相关结果附加到Query.results列表中 伪代码如下所示: for q in queries_list for r in results_list if q.search_id == r.search_id q.results.append(r) 您的伪代码几乎是pyth
for q in queries_list
for r in results_list
if q.search_id == r.search_id
q.results.append(r)
您的伪代码几乎是python代码,但这里有一个使用过滤器的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对结果和查询进行排序。您的伪代码几乎就是Python。你只是缺少冒号:
for q in queries_list:
for r in results_list:
if q.search_id == r.search_id:
q.results.append(r)
这是假设您的查询对象已经具有结果
属性
如果没有,您可以在运行时创建它们:
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]
看起来你已经有了一个有效的解决方案-这里的问题到底是什么?你在找更好的方法吗?更快/更有效的方法?是的,我正在寻找更有效的解决方案。