# Learn Algorithm Design by Building a Shortest Path Algorithm - Step 44

### Tell us what’s happening:

I believe I followed the instructions: You should use the `remove()` function to remove the current node from `unvisited` after your `for` loop. Any thoughts?

``````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)

/* User Editable Region */

while unvisited:
current = min(unvisited.remove(), key=distances.get)
for node, distance in graph[current]:
if distance + distances[current] < distances[node]:
distances[node] = distance + distances[current]
if paths[node][-1] == node:
paths[node] = paths[current]
else:
paths[node].extend(paths[current])
paths[node].append(node)

/* User Editable Region */

print(f'Unvisited: {unvisited}\nDistances: {distances}\nPaths: {paths}')

#shortest_path(my_graph, 'A')

``````

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`

### Challenge Information:

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

It should be after the `for` loop and you need to pass `remove()` the `current` node as an argument.

I believe that’s what I did by adding `remove.(paths[current])` at the end of the code, on the same indentation as the for loop.

However it still didn’t work.

Post your latest code. The argument you have is not quite correct, it is just the `current` node.

``````    for node, distance in graph[current]:
if distance + distances[current] < distances[node]:
distances[node] = distance + distances[current]
if paths[node][-1] == node:
paths[node] = paths[current]
else:
paths[node].extend(paths[current])
paths[node].(node)
remove.(paths[current])
``````

the syntax is wrong.

correct syntax is `listvariable.remove(value)` . replace value with `current` and replace `listvariable` with list mentioned in the instruction.

first please reset i find other error’s in latest code u have posted. please reset and add correct syntax after for loop, inside while loop.

2 Likes

You initially had the correct syntax it was just in the wrong place and missing the argument.

As said, the `remove` method is on the list `list.remove(x)`

1 Like

I was missing something as it took me a while.
You just need to place the list.remove(x) after the for loop as stated above, and then replace x with the node. Hint: What is calling entire node from your list? It’s something you’ve already written at the start of while loop.