问题是:图表可以通过列出每行一个链接在文件中表示,每个链接由一对节点表示。编写一个读取此类文件的函数,并返回该图的邻接列表(作为字典)。请注意,对于文件中的每一行A B,您的函数将需要将节点B插入到邻居列表A中,并将节点A插入到B的邻居列表中。可能的文件示例:
graph.txt
A B
A C
A D
B E
C D
C E
我希望最终列表看起来像这样:
adjList = {
A: [B, C, D],
B: [A, E],
C: [A, D, E],
D: [A, C],
E: [B, C],
}
您可以使用defaultdict来回答此问题。我编写了代码并且它正在运行,但您可能想先考虑它。
dictAdjacency=defaultdict(list)
with open('C:/graph.txt') as readObj:
lines=readObj.readlines()
for line in lines:
tempList=line.rstrip('\n').split(' ')
dictAdjacency[tempList[0]].append(tempList[1])
dictAdjacency[tempList[1]].append(tempList[0])
print(dictAdjacency)
defaultdict(<class 'list'>,
{
'A': ['B', 'C', 'D'],
'B': ['A', 'E'],
'C': ['A', 'D', 'E'],
'D': ['A', 'C'],
'E': ['B', 'C']
})