同时迭代两个列表,如果另一个列表存在,则从一个列表中删除

时间:2016-02-19 21:34:36

标签: python list dictionary flask sqlalchemy

我需要检查similar结果中是否存在exact结果的ID,然后排除该结果,我只是不确定最佳方法。< / p>

我假设我必须找到一种方法来遍历两个列表,然后尝试if similar.ID != exact.ID之类的内容并将其传递给变量以传递给Jinja2模板。

正在使用SQL-Alchemy完成查询;

exact_assets = Motor.query.filter_by(**filter_data).all()
similar_assets = Motor.query.filter_by(**similar_filter_data).all()

# Something like

# for similar_asset, exact_asset in similar_assets, exact_assets:
#     if similiar_asset.id == asset.id:
#        similar_asset.pop(id)

我知道语法不正确,甚至不能使用列表或词典(?),但希望它能够表达我想在这里实现的目标。

1 个答案:

答案 0 :(得分:1)

首先创建一个要与之比较的键列表(假设相等意味着代码中的id相同)

exact_assets_ids = [item.id for item in exact_assets]

然后过滤您的类似资产

final_assets = [item for item in similar_assets if item.id in exact_assets_ids]

更新:刚刚注意到它是交集:)

final_set = list(set(similar_assets) or set(exact_assets))

但在这种情况下,您应该实施Motor.__eq__