从csv文件在python中创建一个邻接列表

时间:2018-03-24 02:21:56

标签: python arrays python-2.7 dictionary

我是python的新手。我有一个CSV文件显示距离矩阵,并希望使用CSV中的信息构建一个邻接列表,但我不知道如何执行此任务。

CSV数据集:

enter image description here

我希望距离是边缘的权重。以下是我预期结果的示例:

AdjList = {1: [{Node2:11242, node5:1511}], 2:[{Node6:1024, Node10:985}], etc. }

1 个答案:

答案 0 :(得分:0)

不失一般性,以下是KnownFolders.VideoLibrary numpy的解决方案。

结果是嵌套字典,其中外键是行号,内键是列号。

该解决方案可以适应您的问题和所需的输出。您可能希望查看collections.defaultdict以分别提取行号,列名和数据,以便在以下算法中使用。

pandas

<强>结果

from collections import defaultdict
import numpy as np

arr = np.array([[0, 134, 0, 451, 0],
                [234, 0, 4513, 0, 0],
                [0, 0, 132, 34, 0],
                [452, 562, 0, 0, 0]])

d = defaultdict(lambda: defaultdict(int))

for i in range(arr.shape[0]):
    for j in range(arr.shape[1]):
        val = arr[i, j]
        if val != 0:
            d[i+1][j+1] = val