我有以下词典:

g = {
'A': ['A', 'B', 'C'],
'B': ['A', 'C', 'E'],
'C': ['A', 'B', 'D'],
'D': ['C','E'],
'E': ['B','D']
}

它实现一个图,每个列表包含图顶点的邻域(字典键是顶点本身)。
我有麻烦了,我想不出从邻居列表中得到一个图邻接矩阵的方法,可能很简单,但我是python新手,希望有人能帮我!我正在使用Python3.5
我需要生成以下矩阵:
python - 如何从python中的字典生成图的邻接矩阵?-LMLPHP

最佳答案

没有熊猫

keys=sorted(g.keys())
size=len(keys)

M = [ [0]*size for i in range(size) ]

for a,b in [(keys.index(a), keys.index(b)) for a, row in g.items() for b in row]:
     M[a][b] = 2 if (a==b) else 1

M

[2, 1, 1, 0, 0],
[1, 0, 1, 0, 1],
[1, 1, 0, 1, 0],
[0, 0, 1, 0, 1],
[0, 1, 0, 1, 0]]

Explanation
for a, row in g.items()遍历dictionary中的key:value条目,for b in row遍历这些值。如果我们用(a,b),这会给我们所有的对。
(keys.index(a), keys.index(b))
但我们需要索引来分配给相应的矩阵项,
keys=sorted(g.keys())
这就是我们提取和分类钥匙的原因。
for a,b in...获取索引项并根据对角线元素或不基于对角线元素分配值1或2。
M = [ [0]*size for ...
初始化前不能使用矩阵。

关于python - 如何从python中的字典生成图的邻接矩阵?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37353759/

10-12 04:26
查看更多