用字典创建邻接表

时间:2019-04-21 19:05:24

标签: python breadth-first-search adjacency-list

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

1 个答案:

答案 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']
})