KeyError: 2, while I am using a list in for loop

16 Views Asked by At
import heapq
n = 3
L = [[0,1,1],[1,2,1],[0,2,5]]
start = 0
target = 2
m = 0
adjList = {}
for num,lv in enumerate(L):
    if lv[0] in adjList:
        adjList[lv[0]].add((lv[1],lv[2]))
    else:
        adjList[lv[0]]={(lv[1],lv[2])}

def dijkstra(adjList, start, target):
    shortest = {}
    minHeap = [(start,target)]
    while minHeap:
        w1, n1 = heapq.heappop(minHeap)
        if n1 in shortest:
            continue
        shortest[n1] = w1
        for n2, w2 in adjList[n1]:
            if n2 not in shortest:
                heapq.heappush(minHeap, (w1+w2, n2))

    return shortest

print(dijkstra(adjList, start, target))

Traceback (most recent call last): File "/Users/samuel/PycharmProjects/pythonProject2/main.py", line 28, in print(dijkstra(adjList, start, target)) File "/Users/samuel/PycharmProjects/pythonProject2/main.py", line 22, in dijkstra for n2, w2 in adjList[n1]: KeyError: 2

I don't know why there is an error when I am trying to call adjList[n1]

0

There are 0 best solutions below