【发布时间】:2019-02-18 17:28:48
【问题描述】:
我想知道将邻接矩阵转换为表示一个节点与另一个节点之间连接的字典的有效方法是什么?
示例矩阵:
matrix = [
[0,1,0,0,0,0],
[0,0,0,0,0,0],
[0,1,0,1,0,0],
[0,0,0,0,0,0],
[0,0,0,1,0,1],
[1,0,0,0,0,0]
]
示例输出:
{0: [1], 1: [], 2: [1, 3], 3: [], 4: [3, 5], 5: [0]}
我下面的代码实际上生成了正确的输出;但是,我认为这是非常低效的,因为我使用了两个 for 循环。有什么方法可以在不使用任何库的情况下优化我的代码?请告诉我,谢谢!
def convertAdjMatrixtoDict(m):
graph = {}
for idx, row in enumerate(m):
res = []
for r in range(len(row)):
if row[r] != 0:
res.append(r)
graph[idx] = res
return graph
【问题讨论】:
-
您只访问每个邻接点一次。这大约和它的速度一样快。库不是免费的性能。仅仅因为你没有看到这些操作并不意味着它们更有效率。
标签: python dictionary for-loop adjacency-matrix adjacency-list