MCPcopy Create free account
hub / github.com/ActiveState/code / toposort2

Function toposort2

recipes/Python/577413_Topological_Sort/recipe-577413.py:22–34  ·  view source on GitHub ↗
(data)

Source from the content-addressed store, hash-verified

20 }
21
22def toposort2(data):
23 for k, v in data.items():
24 v.discard(k) # Ignore self dependencies
25 extra_items_in_deps = reduce(set.union, data.values()) - set(data.keys())
26 data.update({item:set() for item in extra_items_in_deps})
27 while True:
28 ordered = set(item for item,dep in data.items() if not dep)
29 if not ordered:
30 break
31 yield ' '.join(sorted(ordered))
32 data = {item: (dep - ordered) for item,dep in data.items()
33 if item not in ordered}
34 assert not data, "A cyclic dependency exists amongst %r" % data
35
36print ('\n'.join( toposort2(data) ))

Callers 1

recipe-577413.pyFile · 0.70

Calls 8

setFunction · 0.50
sortedFunction · 0.50
itemsMethod · 0.45
discardMethod · 0.45
valuesMethod · 0.45
keysMethod · 0.45
updateMethod · 0.45
joinMethod · 0.45

Tested by

no test coverage detected