from functools import reduce
from operator import add
def yolo(arr):
unique = set
def concatenate(lists):
return reduce(add, lists)
def keys_for(val):
return [key for key in arr if val in arr[key]]
def pairs():
return [(keys_for(val), val) for val in unique(concatenate(arr.values()))]
result = {}
for pair in pairs():
keys, val = ','.join(pair[0]), pair[1]
if keys not in result:
result[keys] = []
result[keys].append(val)
return result