Преобразование 2D-массива (списка смежности) в словарь Python - PullRequest
0 голосов
/ 27 февраля 2019

Мой список соседей:

Graph = [[3, 4], [3], [3, 4], [0, 1, 2], [0, 2]]

Я хотел бы получить этот вывод:

adjacency_dict = {0: [3, 4], 
                  1: [3], 
                  2: [3, 4], 
                  3: [0, 1, 2], 
                  4: [0, 2]}

Все предыдущие решения, которые я пробовал, дали мне "Ошибка типа: не подлежит обработкеtype: 'list' ", что я концептуально понимаю, почему я получаю, но я не могу преобразовать это понимание в фактическое написание решения.Я относительно новичок в Python, поэтому любые предложения будут полезны.

Ответы [ 3 ]

0 голосов
/ 27 февраля 2019

Технически результат, которого вы пытаетесь достичь со словарем, будет таким же, как и в списке.

Например, попробуйте это

>>>Graph[0][1]
//will print 4
>>>Graph[1][0]
//will print 3

Но если вы действительно хотите преобразовать список всловарь с ключом, который вы описали, можно сделать в следующем коде:

adjacency_dict = {}
for idx, val in enumerate(Graph):
  adjacency_dict[idx] = val
0 голосов
/ 27 февраля 2019

Хотя толкование дает тот же результат, я нахожу это более кратким:

adjacency_dict = dict(enumerate(Graph))
0 голосов
/ 27 февраля 2019

Попробуйте это:

adjacency_dict = {i: j for i,j in enumerate(Graph)}

или

adjacency_dict = {i:Graph[i] for i in range(len(Graph))}
...