2016-10-07 12 views
2

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}, } 

はどこで間違っているとどのように私は私の所望の出力を返すことができますか?

答えて

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]): –

関連する問題