小编dje*_*acs的帖子

将邻接矩阵转换为字典的有效方法是什么?

我想知道将邻接矩阵转换为表示一个节点与另一个节点之间的连接的字典的有效方法是什么?

矩阵示例:

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]
]
Run Code Online (Sandbox Code Playgroud)

输出示例:

{0: [1], 1: [], 2: [1, 3], 3: [], 4: [3, 5], 5: [0]}
Run Code Online (Sandbox Code Playgroud)

我下面的代码实际上生成了正确的输出;但是,我认为这是非常低效的,因为我使用了两个 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
Run Code Online (Sandbox Code Playgroud)

python dictionary for-loop adjacency-list adjacency-matrix

3
推荐指数
1
解决办法
2456
查看次数