См .: https://www.python.org/doc/essays/graphs/
graph = {
'a' : [ 'a' ],
'b' : [ 'd' ],
'c' : [ 'f' ],
'd' : [],
'e' : [ 'f' ],
'f' : [],
'g' : [],
'm' : [ 'g' ],
'n' : [ 'f' ]
}
print [ vertex for vertex, edges in graph.items() if 'f' in edges ]
EDIT:
Хорошо, похоже, вы просто хотите, чтобы функция строила график из заданных вами входных данных?
Примерно так:
def build_graph( vertices, edges ):
graph = dict( (v, list()) for v in vertices.keys() )
for a, b in edges:
graph[ a ].append( b )
return graph
Если вам нужна помощь в разборе столбчатых данных в список из двух кортежей, тогда это совсем другой вопрос