我需要组合列表中包含相同子字符串的所有元素。文本:
lst = ["A,B,C", "A,H,J", "T,Q,M", "B,R,X"]`
从第一个元素“A,B,C”开始,我需要在 lst 列表中的其余元素中查找“A”或“B”或“C”。因此,到一天结束时,元素 "A,B,C"、"A,H,J"
和 "B,R,X"应该放在一起作为一个字符串,因为它们共享任一 "A”或“B”。最终的 lst 列表应如下所示:
["A,B,C,A,H,J,B,Q,X", "T,Q,M"]
最佳答案
您可以使用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']
关于python - 组合包含相似子字符串的列表元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29399880/