2014-10-07 37 views
0

說我有元組的這樣的一個名單列表唯一值:蟒蛇的元組的列表,其中的內容之一是列表

a = [(["I", "love", "apples"], "good"), 
(["I", "love", "apples"], "good")), 
(["I", "hate", "apples"], "bad")), 
(["I", "dislike", "apples"], "bad")),] 

我想刪除重複的,但list(set(a))出現了錯誤:

TypeError: unhashable type: 'list' 

有沒有從這種類型的列表中刪除重複

+0

雖然上述鏈路稍有不同,該解決方案將在這種情況下工作太(具有小的調整)。 – CoryKramer 2014-10-07 17:42:26

回答

2

假設你正在創建的數據,使用元組作爲第一個項目,而不是列出

a = [ 
    (("I", "love", "apples"), "good"), 
    (("I", "love", "apples"), "good"), 
    (("I", "hate", "apples"), "bad"), 
    (("I", "dislike", "apples"), "bad") 
] 

print len(set(a)) 

輸出:

3 
1

列表不哈希的,所以你不能簡單的調用設置在任何Python的方式。

可以內部列表轉換成元組,然後調用列表(集()):

list(set([(tuple(sent), good_bad) for sent, good_bad in a]))