Learn Algorithm Design by Building a Shortest Path Algorithm - Step 47

Tell us what’s happening:

I can’t seem to figure out how to slice the list into the correct length.
What should start and endpoint be? I am lost

Your code so far

my_graph = {
    'A': [('B', 3), ('D', 1)],
    'B': [('A', 3), ('C', 4)],
    'C': [('B', 4), ('D', 7)],
    'D': [('A', 1), ('C', 7)]
}

def shortest_path(graph, start):
    unvisited = list(graph)
    distances = {node: 0 if node == start else float('inf') for node in graph}
    paths = {node: [] for node in graph}
    paths[start].append(start)
    
    while unvisited:
        current = min(unvisited, key=distances.get)
        for node, distance in graph[current]:
            if distance + distances[current] < distances[node]:
                distances[node] = distance + distances[current]

# User Editable Region

                if paths[node] and paths[node][-1] == node:
                    paths[node] = paths[current:node]

# User Editable Region

                else:
                    paths[node].extend(paths[current])
                paths[node].append(node)
        unvisited.remove(current)
    
    print(f'Unvisited: {unvisited}\nDistances: {distances}\nPaths: {paths}')
    
shortest_path(my_graph, 'A')

Your browser information:

User Agent is: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Safari/605.1.15

Challenge Information:

Learn Algorithm Design by Building a Shortest Path Algorithm - Step 47

Welcome to the forum @v1quu

Here is an article on slicing you may find helpful.

Happy coding

This article is good as well (since you won’t be using numpy arrays here, but the slicing syntax is the same)

https://therenegadecoder.com/code/how-to-clone-a-list-in-python/#copy-a-list-using-a-slice