2014-11-08 139 views
-2

我需要此列表的幫助。我現在不怎麼解決這個問題。如何從字符串列表中刪除重複項?

我有這個名單

s = [['aaa', 'bbb'], ['ccc', 'bbb'], ['bbb', 'ddd'], ['fff', 'ddd'], ['ccc', 'eee']] 

我想從這個名單中刪除重複項。

輸出必須:

[['aaa', 'bbb'], ['fff', 'ddd'],['ccc', 'eee']] 
+0

我不太確定這裏應該發生什麼 - 您是否嘗試刪除包含非唯一字符串的所有子列表,同時確保包含原始列表中存在的任何字符串都包含在內在輸出的某個地方? – GoBusto 2014-11-08 16:32:25

+0

是的,如果包含非唯一字符串,我想刪除所有子列表。 – Celjan 2014-11-08 16:36:08

+0

請介意編輯原始問題以澄清此問題嗎?另外,你會如何期待這樣的半獨特的子列表被處理:'[['aaa','bbb'],['ccc','aaa'],['ddd','eee']] ' – GoBusto 2014-11-08 16:39:29

回答

-1
s = [['aaa', 'bbb'], ['ccc', 'bbb'], ['bbb', 'ddd'], ['fff', 'ddd'], ['ccc', 'eee']] 

flaten = [ j for i in s for j in i ] 
filter_l = list(set(flaten)) 

res = [] 
for ele in s: 
    if ele[0] in filter_l and ele[1] in filter_l : 
     res.append(ele) 
     filter_l.remove(ele[0]) 
     filter_l.remove(ele[1]) 

print res 

output : [['aaa', 'bbb'], ['fff', 'ddd'], ['ccc', 'eee']] 

那麼有可能是更優化的方式來實現它,但是這是我得到。

+0

@Downvoter請在評論中添加您的理由。 – 2014-11-08 18:55:11

0

如何使用下面的代碼?

s = [['aaa', 'bbb'], ['ccc', 'bbb'], ['bbb', 'ddd'], ['fff', 'ddd'], ['ccc', 'eee']] 

def get_unique_pairs(pairs): 
    unique_pairs = [] 
    for pair in pairs: 
     unique_pairs_flattened = [x for p in unique_pairs for x in p] 
     if not (pair[0] in unique_pairs_flattened or pair[1] in unique_pairs_flattened): 
      unique_pairs.append(pair) 

    return unique_pairs 

print(get_unique_pairs(s)) # => [['aaa', 'bbb'], ['fff', 'ddd'],['ccc', 'eee']]