Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from collections import deque
- o = [[1,2],[3,4],[2,3],[5,4]]
- def group_lists(list_of_lists):
- '''Combine all items in list_of_lists that share
- an element recursively, until no two share an item'''
- queue = deque( sorted(list_of_lists, key=lambda x:min(x)) )
- grouped = []
- while len(queue) >= 2:
- print('queue length', len(queue))
- s1 = set(queue.popleft())
- s2 = set(queue.popleft())
- if s1 & s2:
- queue.appendleft(s1 | s2)
- else:
- grouped.append(s1)
- queue.appendleft(s2)
- if queue:
- grouped.append(queue.pop())
- return grouped
- group_lists(o)
Add Comment
Please, Sign In to add comment