Мне интересно, как эффективно преобразовать матрицу смежности в словарь, представляющий соединения между одним узлом?
Пример матрицы:
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]}
Мой код ниже на самом деле генерирует правильный вывод;однако я считаю, что это очень неэффективно, потому что я использую два для циклов.Есть ли способ оптимизировать мой код без использования каких-либо библиотек?Пожалуйста, дайте мне знать, и спасибо!
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