问题问: 可以通过在每行中列出一个链接来表示文件中的图形,每个链接由一对节点表示。编写一个读取此类文件并返回图的邻接表(作为字典)的函数。请注意,对于文件中的每一行 AB ,您的函数需要将节点 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],
}
答案 0 :(得分:1)
您可以使用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']
})