2015-04-01 70 views
1

我需要組合包含相同子字符串的列表中的所有元素。 T.ex:組合包含類似子字符串的列表元素

lst = ["A,B,C", "A,H,J", "T,Q,M", "B,R,X"]` 

開始的第一個元素「A,B,C」我需要仰視或者「A」或「B」或「C」在LST列表中元素的其餘部分。因此,在一天結束時元素"A,B,C", "A,H,J"和「B,R,X」應該放在一起作爲一個字符串,因爲它們共享「A」或「B」。最終的LST名單應該是這樣的:

["A,B,C,A,H,J,B,Q,X", "T,Q,M"] 

回答

1

您可以使用set.intersection檢查,如果字符串有一個遞歸函數中的任何交點:

lst = ["A,B,C", "A,H,J", "T,Q,M", "B,R,X"] 

def comb(l): 
    for ind,i in enumerate(l) : 
     for ix,j in enumerate(l[ind+1:]) : 
     if set(i.split(',')).intersection(j.split(',')) and len(l)>1: 
       return comb([l.pop(ind)+','+l.pop(ix)]+l) 

    return l 

print comb(lst) 
['A,B,C,A,H,J,B,R,X', 'T,Q,M'] 
+0

太好了!它似乎工作。我會盡力將它整合到我的代碼 – user3468837 2015-04-01 20:34:03

+0

@ user3468837中來!所以你可以告訴社區投票並接受答案! – Kasramvd 2015-04-01 20:36:26

相關問題