组合包含类似子串的列表元素

时间:2015-04-01 20:11:37

标签: python list

我需要组合包含相同子字符串的列表中的所有元素。 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"。最终的第一个列表应如下所示:

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

1 个答案:

答案 0 :(得分: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']