我有一个文本文件,其中包含无向图中的所有连接,如下所示:
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 转换为字典,并且在转换后我不知道如何将连接加载到其中。我想只是迭代数据并在字典上标记所有连接?
非常感谢任何有关如何进行的建议。
只需在读取文件时创建邻接字典即可。您可以通过从该字典中获取键来获取节点列表。
# 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
是最好的计划