Python aggregate lists that share a common item

Advertisements

I’m looking for a function to aggregate lists that have a common item. The specific example I had in mind was the following case:

inputs = [['a','b'], ['a','c'], ['b','d'], ['e','f'], ['g','h'], ['i','k'], ['k','l']]
aggregated_output = [['a','b','c','d'],['e','f'],['g','h'],['i','k','l']]

as you can see, all the lists that share a common item have been bunched together. The order of the lists or the items in the lists in the output does not matter.

>Solution :

Maybe Brute-Force Solutions help you:

inputs = [['a','b'], ['a','c'], ['b','d'], ['e','f'], ['g','h'], ['i','k'], ['k','l']]

res = []
for arr in inputs:
    flaq = False
    for r in res:
        for a in arr:
            if a in r:
                r += [a for a in arr if not a in r]
                flaq = True
                break
    if not flaq:
        res.append(arr)
print(res)

Output:

[['a', 'b', 'c', 'd'], ['e', 'f'], ['g', 'h'], ['i', 'k', 'l']]

Leave a ReplyCancel reply