创建一个类列表不允许重复的条目

时间:2012-12-13 18:56:33

标签: python

我正在尝试创建一个不允许重复条目的类

class QSet(list):
    def __init__(self,*args):
        super(QSet, self).__init__(args[0])
        self=list(set(self))  

并且在尝试测试未删除的类重复条目时

d=["a","b","a","z","a"]
z=QList(d)       

print d  
print z

任何解决此问题的建议 感谢

4 个答案:

答案 0 :(得分:4)

您可以通过对代码进行少量更改来执行您想要的操作:

class QSet(list):
    def __init__(self, a):
        super(QSet, self).__init__(list(set(a)))

我改变了你如何使用构造函数args,因为它奇怪地接受任意参数,但后来坚持至少有一个,并忽略所有其余的。

答案 1 :(得分:3)

重新分配self实际上不会更改对象(您只是将标识符self重新绑定到新对象)。您可以将该行更改为:

    self[:] = list(set(self))  

答案 2 :(得分:0)

您知道set正是您正在构建的课程,对吗?

>>> s = set([1,2,3,3,3])
>>> s.add(4)
>>> s
set([1, 2, 3, 4])
>>> s.add(4)
>>> s
set([1, 2, 3, 4])

答案 3 :(得分:0)

Python已经有了一个类。它叫做set

d=["a","b","a","z","a"]
z=set(d)       

print d  
print z

这对你有用吗?