删除两个列表之间的交集 [英] Delete intersection between two lists

查看:134
本文介绍了删除两个列表之间的交集的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有两个对象列表:

m2m_links = mymodel._meta.many_to_many
o2m_links = mymodel._meta.get_all_related_objects()

o2m_links中有一个对象我想忽略/删除。可以通过以下方式进行标识:

There is an object in o2m_links that I wish to omit/delete. It can be identified in the following way:

for r in m2m_links:
    if not r.rel.through._meta.auto_created:
        # Delete o2m_links object that has the same name as r.rel.through._meta.object_name

如何删除符合此循环命中条件的o2m_links对象?

推荐答案

您可以使用集合和列表理解来过滤列表:

You can use a set and a list comprehension to filter the list:

names_to_remove = set([r.rel.through._meta.object_name for r in m2m_links if not r.rel.through._meta.auto_created])
filtered_list = [r for r in o2m_links if r.rel.through._meta.object_name in names_to_remove]

这篇关于删除两个列表之间的交集的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆