So far our Vertex class has stored edges inside of a dictionary with keys of the connected vertex’s name and the value simply set to True.

We can make our implementation support edge weights with a few small changes. To keep this class as flexible as possible, we’ll introduce a default weight argument to .add_edge() in the Graph and Vertex classes. With no explicit weight argument, it will default to 0. We’ll then set the appropriate value in the dictionary to that weight.

Weighted edges allow us to make graphs that represent rail systems with a travel-time between stations.

railway = Graph() callan = Vertex('callan') peel = Vertex('peel') harwick = Vertex('harwick') railway.add_vertex(callan) railway.add_vertex(peel) railway.add_vertex(harwick) # Travel-time between callan and peel: 12 railway.add_edge(callan, peel, 12) # Travel-time between harwick and callan: 7 railway.add_edge(harwick, callan, 7) print(callan.edges) # { 'peel': 12 } print(harwick.edges) # { 'callan': 7 }



Inside vertex.py, alter the .add_edge() method so it takes an additional argument of weight.

weight should default to the value of 0.


Replace the value of True with the value of weight passed into the method.


Tab over to graph.py.

Inside Graph, alter .add_edge() so it also takes an additional argument of weight.

This argument should also default to 0.


Within the Graph class .add_edge() method, pass the weight argument to the .add_edge() methods of from_vertex and to_vertex.

Tab over to script.py. Uncomment the code and run it.

Sign up to start coding

Mini Info Outline Icon
By signing up for Codecademy, you agree to Codecademy's Terms of Service & Privacy Policy.

Or sign up using:

Already have an account?