Исходная строка:
'12,28,87,71,13,14,34,35,45,46,63,65'
'1365417821'
'12871135641'
Пока что у меня не получается создать словарь смежности.
Вот что имеется:
def adjaс_dict(lst): '''Создает словарь смежности lst - список вершин ["12", "14", "65"]''' d = {} for i in lst: if i[0] not in d: d.update({i[0]: i[1]}) elif i[0] in d: d.update({i[0]: (list(d[i[0]]) + [i[1]])}) return d def nodes(lst): '''Создает список всех узлов графа''' tmp = [] for i in lst: for j in i: if j not in tmp: tmp.append(j) tmp.sort() return tmp def check_nodes(lst, vertex_lst, d_ad): '''Добавляет в словарь смежности недостающих узлов lst - список всех узлов графа; vertex_lst - список вершин; d - словарь смежности''' for i in lst: if i not in d_ad: for j in vertex_lst: if i in j: d_ad.update({j[1]:j[0]}) return d_ad s = '12,28,87,71,13,14,34,35,45,46,63,65' v_lst = s.split(',') d = adjaс_dict(v_lst) tmp = nodes(v_lst) d = check_nodes(tmp, v_lst, d)
['1', '2', '3', '4', '5', '6', '7', '8'] {'1': ['2', '3', '4'], '3': ['4', '5'], '2': '8', '5': '6', '4': ['5', '6'], '7': '1', '6': ['3', '5'], '8': '7'}
d['5']
['6', '4', '3']