Почему выдаёт ошибку list indices must be integers or slices, not type

введите сюда описание изображения

   import collections
defaultdict = collections.defaultdict(list)
deque=collections.deque
List=[]
class Solution:
    def shortestAlternatingPaths(self, n: int, red_edges: List[List[int]], blue_edges: List[List[int]]) -> List[int]:
        g = [defaultdict(list), defaultdict(list)]
        for i, edges in enumerate([red_edges, blue_edges]):
            for u, v in edges:
                g[i][u].append(v)
        dist = [[0] + [float('inf')] * (n-1) for _ in range(2)]
        q = deque([(0, 0, 0), (0, 0, 1)])
        while q:
            d, u, color = q.popleft()
            d += 1
            color ^= 1
            for v in g[color][u]:
                if dist[color][v] > d:
                    dist[color][v] = d
                    q.append([d, v, color])
        return [x if (x := min(a, b)) != float('inf') else -1  for a, b in zip(*dist)]

Ответы (1 шт):

Автор решения: GrAnd

Вы определили переменную List как список. А дальше пытаетесь использовать её в определении метода. И, естественно, конструкция вида List[int] выдаёт эту ошибку. Это всё равно как в коде написать:

a = []
b = a[int] # what???

Скорее всего вы хотели написать это:

from typing import List
...
def shortestAlternatingPaths(self, n: int, red_edges: List[List[int]], blue_edges: List[List[int]]) -> List[int]:

→ Ссылка