2012-12-13 120 views
0

我想創建一個類不允許重複entryies創建一個類列表不允許重複的條目

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 

任何建議解決此問題 謝謝

+0

如何回合'名單.__的init __(自我,名單(套(個體經營)))' –

+0

如果你要允許插入也許你想要的是一組或ordereddict –

+1

當你說「不允許」 - 這是不禁止他們,它默默地只是沒有讓他們....然後呢,如果我更改索引到一個現有的值 - 然後呢?另外,如果我對這樣的事情提供了一個序列順序,我將有一個有點意外的,如果它不能維持我給它的命令...不知道你已經通過這實際上是如何實際是想...(你可能只是一組有序實施後) –

回答

3

重新分配self實際上並沒有改變對象(您只是重新標識了標識符self到一個新的對象)。您可以將行更改爲:

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

非常感謝它的作品 – user522745

4

你可以做你想做的一個小改變了代碼:

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

我改變了你如何使用構造函數指定參數時,由於其奇接受任意論點,但是堅持至少有一個,而忽略其餘的。

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]) 
+1

尤瓦爾·亞當感謝表哥,我知道 – user522745

0

已經有Python中的一個類。它被稱爲集

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

print d 
print z 

這是否適合你?

+0

是工作,但我想打造類也展示Qset任務,這是PyQt4中錯過 – user522745