#python #dictionary
#python #словарь
Вопрос:
Я хочу смоделировать график, используя словари в Python.
G = {'a':{'b':3, 'c':4},
'b':{'a':3, 'c':5},
'c':{'a':4,'b':5},
}
G — это словарь, в котором каждое значение представляет собой словарь, который представляет смежные узлы со своим весом.
У меня есть следующий код:
def Graph(nodes):
list_nodes = []
list_adjacent_nodes = []
graph = {}
for i in range(nodes):
node = raw_input(" ID Node %d:" %(i 1))
list_nodes.append(node)
num_adjacent_nodes = input(" Num adjacent nodes '%s':" %(list_nodes[i]))
list_adjacent_nodes.append([])
for j in range(num_adjacent_nodes):
adjacent_node = raw_input(" ID adjacent nodes %d:" %(j 1))
list_adjacent_nodes.append[i].append(adjacent_node)
weight = input(" Wight (Nodes(%s,%s) ): " %(list_nodes[i],list_adjacent_nodes[i][j] ) )
graph[list_nodes[i]] = {}
graph[lista_nodes[i]][list_adjacent_nodes[i][j]] = weight
return graph
Однако я получаю следующий результат:
G = {'a':{'c':4}, 'b':{'c':5}, 'c':{'b':5}, }
Где я ошибся и как я могу вернуть желаемый результат?
Ответ №1:
Вы перезаписываете «внутренний» словарь на каждой итерации цикла пустым словарем. Вы должны делать это только в том случае, если он отсутствует:
if not graph[list_nodes[i]]: # Here!
graph[list_nodes[i]] = {}
graph[list_nodes[i]][list_adjacent_nodes[i][j]] = weight
Комментарии:
1. Спасибо, это работает с if not grafica.get(lista_nodos[i]):