Я делаю курсовую работу, которая включает графики. У меня есть списки ребер E = [('a', 'b'), ('a', 'c'), ('a', 'd'), ('b', 'c') и т. Д.] И Я хочу, чтобы функция конвертировала их в матрицы смежности в виде словарей {'a': ['b', 'c', 'd'], 'b': ['a' и т. Д.}, Чтобы я может использовать функцию, которая вводит только эти словари.
Моя главная проблема в том, что я не могу понять, как использовать цикл для добавления ключей: значений, не перезаписывая списки. Предыдущая версия моей функции выводила бы [] как все значения, потому что у 'f' нет соединений.
Я пробовал это:
V = ['a','b','c','d','e','f']
E=[('a', 'b'), ('a', 'c'), ('a', 'd'), ('b', 'c'), ('b', 'd'), ('c', 'd')]
def EdgeListtoAdjMat(V,E):
GA={}
conneclist=[]
for v in V:
for i in range(len(V)):
conneclist.append([])
if (v,V[i]) in E:
conneclist[i].append(V[i])
for i in range(len(V)):
GA[V[i]]=conneclist[i]
return(GA)
EdgeListtoAdjMat (V, E) выводит:
{'a': [], 'b': ['b'], 'c': ['c', 'c'], 'd': ['d', 'd', 'd'], 'e': [], 'f': []}
тогда как он должен вывести:
{'a':['b','c','d'],
'b':['a','c','d'],
'c':['a','b','d'],
'd':['a','b','c'],
'e':[],
'f':[]
}