Hey guys. I’m trying to apply the slice syntax as required, but I can’t figure out the issue. I’ve tried many options but with no avail. Can you please help me?
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][current] = paths[current]
/* 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 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0
Challenge Information:
Learn Algorithm Design by Building a Shortest Path Algorithm - Step 47
Well, I’ve tried to assign ‘node’ and ‘paths[node]’ as paths[current], also as path[:current] and vice-versa and other options. How to I get a copy of a list item using slice syntax as suggested?
The slice syntax is the following: a_list[start:end]. Where start and end are the indexes indicating the part of the list to slice.
If you want to copy the entire list you can simply omit the starting and ending indexes.
Remember that you want to copy paths[current].
this step is so odd. I had to resort to help of way more experienced coders to solve this. the solution posted here doesn’t help at all - why was list slicing necessary in the first place? why was .copy() not an acceptable answer?
I would suggest opening a new thread to ask this question.
My quick take: There are a few different ways to accomplish any task. This lesson is teaching different methods in the context of building a project. I’m not familiar with this project, maybe it was building on a previous lesson?
Now, you know two different methods to copy a list.