Но вообще в данном случае не очень хорошо использовать `defaultdict`. Множество ключей известно зарание (`range(1, n+1)` видимо), так что можно написать `{u: {v: 0 for v in vertexes} for u in vertexes }`  или, так как ключи целые числа, вообще использовать список списков.

Это будет лучше с той точки зрения что, если случайно обратиться к несуществующей вершине, будет исключение, а не silent failure. 

Короче говоря, проще будет искать баги в коде