如何将相邻节点列表转换为图(邻接列表)

问题描述 投票:0回答:1

我有一个文本文件,其中包含无向图中的所有连接,如下所示:

N_0, N_2
N_5, N_3
N_3, N_2

等等。有了这个文本文件,我想生成一个图来对其运行 DFS。

这是我的思考过程:

我将文件转换为二维数组,查找有多少元素,并使用此信息创建邻接表。

这就是我目前所拥有的

fileName = input("Enter text file name: ")

# Create 2D array of connected nodes
with open(fileName, "r") as file:
    data = [[str(x) for x in line.replace('\n', '').split(",")] for line in file]

#Create list of unique nodes and sort them
nodeList = list(set(i for j in data for i in j))
nodeList.sort(key=lambda x: int(x[x.find('_') + 1:]))

adjacencyList = dict(nodeList)

我不知道如何继续。我无法将 nodeList 转换为字典,并且在转换后我不知道如何将连接加载到其中。我想只是迭代数据并在字典上标记所有连接?

非常感谢任何有关如何进行的建议。

python list sorting
1个回答
0
投票

只需在读取文件时创建邻接字典即可。您可以通过从该字典中获取键来获取节点列表。

# Create 2D array of connected nodes
nodes = {}
for line in open('x.txt'):
    a,b = line.rstrip().split(', ')
    if not a in nodes:
        nodes[a] = [b]
    else:
        nodes[a].append( b )

print(nodes)
print(list(nodes.keys()))

输出:

{'N_0': ['N_2'], 'N_5': ['N_3'], 'N_3': ['N_2']}
['N_0', 'N_5', 'N_3']

不过,建议使用

networkx
是最好的计划

© www.soinside.com 2019 - 2024. All rights reserved.