Создание списка смежности со словарями - PullRequest
0 голосов
/ 21 апреля 2019

Вопрос задает: График может быть представлен в файле путем перечисления одной ссылки на строку, причем каждая ссылка представлена ​​парой узлов. Напишите функцию, которая читает такой файл и возвращает список смежности (в виде словаря) для графа. Обратите внимание, что для каждой строки 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 Ответ

1 голос
/ 21 апреля 2019

Вы можете использовать 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']
})
...