Как сохранить декартово произведение в словарь?

Как можно из данного вида [(1,2),(1,3),(2,3)] получить {1:[2,3], 2:[1,3], 3:[1,2]}? Нужно для реализации поиска в глубину графа, где чаще все используют словарь в качестве параметра функции. Всевозможные пары точек я создал с помощью itertools.permutations, но мне нужно сохранить все данные значения в dict. Из какой "точки" я могу попасть в другую, то есть, например, я могу из A попасть и в B, и в C. Следовательно в словаре должно появиться значение A:[B,C]

import itertools
n = int(input('Введите количество вершин '))
digits_for_dict = [x for x in range(1, n+1)]
lst = list(itertools.permutations([x for x in range(1,n+1)], 2))
d = dict.fromkeys(digits_for_dict, list)
print(lst)

Если использовать встроенный dict, то теряются все "значения".

n = int(input('Введите количество вершин '))
lst = dict(itertools.permutations([x for x in range(1,n+1)], 2))
print(lst)

{1: 3, 2: 3, 3: 2}

Со словарями вообще не работал, первый опыт.... Хочу взять код для поиска в глубину из данного видео: https://youtu.be/99AJrUyLvLQ


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

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

Попробуйте вот так:

d = {}
for i, j in lst:
    if i not in d.keys():
        d[i] = [j]
    else:
        d[i].append(j)
print(d)
→ Ссылка
Автор решения: TigerTV.ru

itertools и zip помогут:

from itertools import product, count

n = int(input('Введите количество вершин '))
d = {a: list(b) for a, b in zip(count(1), product(range(1,n+1), repeat=2))}
print(d)
→ Ссылка