я предполагаю, что это для какой-то формы отображения:
from itertools import chain
def makeMap(d):
nodes = set([x for x in chain.from_iterable(d.values())])
return dict([[x, [y for y in d.keys() if x in d[y]]] for x in nodes ])
этот код сделает это за вас:)
EDIT:
и вот (массивный) один слой, я бы не советовал помещать это в код, так как он не читается.
def makeMap(d):
return dict([[x, [y for y in d.keys() if x in d[y]]]
for x in set([x for x in chain.from_iterable(d.values())])
])
шаги:
1. сделать набор всех возможных значений узла
2. найти все значения узла в значениях словаря, если затем поместить ключ, в котором он был найден, в отображенный список.