2013-03-02 71 views
-2

當我鍵入以下代碼時。我只是嘗試刪除列表中的重複項目。這個列表中可能有10K對。TypeError:不可用類型:'list',刪除列表中的重複項

>>> t = [['a','1'],['a','1'],['a','2']...] 
>>> t = list(set(t)) 

Traceback (most recent call last): 
File "<pyshell#19>", line 1, in <module> 
t = list(set(t)) 
TypeError: unhashable type: 'list' 
>>> 
+0

的獨特元素順便說一句,我使用Python2.7 – xlk3099 2013-03-02 02:26:52

回答

0

嘗試與元組替換名單:('a','1')。據我所知,元組是可散列的。

+0

真的THX,它解決了我的問題:) – xlk3099 2013-03-02 02:31:34

+0

@ xlk3099嘗試在未來的一個調查問題,'文檔set'明確提到元素必須是可散列的,並且f不難ind是可排列的。 – Andrey 2013-03-02 02:33:07

+0

@Andrey - 只要所有元素都是可散列的,元組就是可散列的。 'hash(([],))'例如失敗 – mgilson 2013-03-02 02:49:45

0

我知道這是舊的,但它仍然在谷歌首先出現。元組的工作,如果你只有兩個元素每個「子榜」,但如果你想更廣泛地刪除重複的子列表,如果你有這樣的列表:

a=[[1,2],[1,2],[1,2],[1,4],[1,2,3],[1,2],[1,2]] 

可以使用

b=[a[x] for x in range(len(a)) if not(a[x] in a[:x])] 

和b只有從