我有一个顶点,例如dic = {'a': 0, 'b': 1, 'c': 2, 'd': 3, 'e': 4, 'f': 5, 'n':6, 'm':7, 'g':8}
,我有两列,如下表示顶点之间的关系:
a a
b d
e f
c f
n f
m g
我想将第一列中的每个顶点与第二列中相应的顶点相关联。因此a
与a
代表一个循环。 b
d
很好。 e
,c
和n
他们共享相同的顶点f
。而是e
与f
,c
与f
和n
与f
说e
,{{1} {}}和c
与n
。
答案 0 :(得分:5)
请参阅: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 ]
编辑:
好吧,听起来你只想要一个函数来从你给定的输入构建图形?
这样的事情:
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
如果您需要帮助将列式数据解析为两元组列表,那么这完全是另一个问题
答案 1 :(得分:0)
@ kurosch的答案(邻接列表)的一般替代方案称为邻接矩阵。它只是一个表示每个可能边缘的矩阵,其中1表示存在边缘,0表示不存在边缘。
adj = [[0 for x in range(len(dic)] for x in range(len(dic))]
adj[dic['a'][dic['b']] = 1
etc..