2016-10-07 4 views
2

파이썬에서 사전을 사용하여 그래프를 시뮬레이트하고 싶습니다.파이썬의 다른 사전에 여러 값을 가진 사전을 만드는 방법

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}, } 
내가 잘못 갈

어떻게 내가 원하는 출력을 반환 할 수 있습니까?

답변

2

루프의 각 반복에서 "내부"사전을 빈 사전으로 덮어 씁니다. 누락 된 경우에만 수행해야합니다.

if not graph[list_nodes[i]]: # Here! 
    graph[list_nodes[i]] = {} 
graph[list_nodes[i]][list_adjacent_nodes[i][j]] = weight 
+1

감사합니다. grafica.get (lista_nodos [i]) : –

관련 문제