簡體   English   中英

從csv文件在python中創建鄰接表

[英]Create an adjacency list in python from csv file

我是python的新手。 我有一個顯示距離矩陣的CSV文件,並想使用CSV中的信息構造一個鄰接表,但是我不知道如何執行此任務。

CSV數據集:

在此處輸入圖片說明

我希望距離成為邊緣的權重。 以下是我預期結果的示例:

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

不失一般性,下面是通過numpycollections.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

結果

defaultdict(<function __main__.<lambda>>,
            {1: defaultdict(int, {2: 134, 4: 451}),
             2: defaultdict(int, {1: 234, 3: 4513}),
             3: defaultdict(int, {3: 132, 4: 34}),
             4: defaultdict(int, {1: 452, 2: 562})})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM