从模型实例列表中删除重复项

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从模型实例列表中删除重复项相关的知识,希望对你有一定的参考价值。

根据帖子:Django comparing model instances for equality

我试图从我的实例列表中删除重复项(尚未保存,我认为他们的'id'为None)

代码是:

a = list()
a.append(relation_list.pop())
for x in relation_list:
    duplicate = False
    for z in a:
        if z is x:
        #or if z.attrib1 == x.attrib1 and z.attrib2 == x.attrib2:
            duplicate = True
    if not duplicate:
        a.append(x)

但是,如果attribs相等,则行duplicate = True永远不会被执行。

我错过了什么?

有没有更有效的方法来实现这一目标? (灵感来自this post使用“in relation_list”要么不起作用。

答案

试试这个,让我知道结果:

a = list()
for x in relation_list:
    if x.attrib1 not in [z.attrib1 for z in a]:
        a.append(x)

以上是关于从模型实例列表中删除重复项的主要内容,如果未能解决你的问题,请参考以下文章

从 Ocaml 中的列表列表中删除重复项?

如何从我的列表中删除重复项? [复制]

从 Visual Studio 2010 (C++) 的错误列表中删除重复项

从列表中删除重复项?

从排序列表中删除重复项不通过所有测试用例

从 Python 列表中删除重复项