@@ -38,7 +38,7 @@ def has_node(self, node):
3838 """
3939 return node in self .node_neighbors
4040
41- def add_edge (self , edge , wt = 1 , label = "" ):
41+ def add_edge (self , edge , wt = DEFAULT_WEIGHT , label = "" ):
4242 """
4343 Add an edge to the graph connecting two nodes.
4444 An edge, here, is a pair of node like C(m, n) or a tuple
@@ -61,17 +61,15 @@ def nodes(self):
6161 """
6262 Returns a list of nodes in the graph
6363 """
64- return list ( self .node_neighbors .keys () )
64+ return self .node_neighbors .keys ()
6565
6666 def has_edge (self , edge ):
6767 """
6868 Returns a boolean to indicate whether an edge exists in the
6969 graph. An edge, here, is a pair of node like C(m, n) or a tuple
7070 """
7171 u , v = edge
72- if v not in self .node_neighbors [u ]:
73- return False
74- return True
72+ return v in self .node_neighbors .get (u , [])
7573
7674 def neighbors (self , node ):
7775 """
@@ -115,14 +113,16 @@ def edges(self):
115113 """
116114 edge_list = []
117115 for node in self .nodes ():
118- for each in self .neighbors (node ):
119- edge_list .append (( node , each ) )
116+ edges = [( node , each ) for each in self .neighbors (node )]
117+ edge_list .extend ( edges )
120118 return edge_list
121119
122120 # Methods for setting properties on nodes and edges
123121 def set_edge_weight (self , edge , wt ):
124122 """Set the weight of the edge """
125123 u , v = edge
124+ if not self .has_edge (edge ):
125+ raise Exception ("Edge (%s, %s) not an existing edge" % (u , v ))
126126 self .node_neighbors [u ][v ] = wt
127127 if u != v :
128128 self .node_neighbors [v ][u ] = wt
@@ -140,10 +140,7 @@ def get_edge_weights(self):
140140 unique_list = {}
141141 for u in self .nodes ():
142142 for v in self .neighbors (u ):
143- if not unique_list . get ( v ) or u not in unique_list .get (v ):
143+ if u not in unique_list .get (v , set () ):
144144 edge_list .append ((self .node_neighbors [u ][v ], (u , v )))
145- if u not in unique_list :
146- unique_list [u ] = [v ]
147- else :
148- unique_list [u ].append (v )
145+ unique_list .setdefault (u , set ()).add (v )
149146 return edge_list
0 commit comments