Построение словаря на основе понимания списка по вложенным спискам

#python

Вопрос:

Для входного вложенного списка

[[[1, 2], [3, 4]], [[5,6]], [[7,8], [9,10], [10,10]]]

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

 D[0] [1] = 2, D[0][3] = 4 D[1] [5] = 6 D[2] [7] = 8, D[2][9] = 10, D[2][10] = 10  

Мое понимание словаря заключается в следующем:

dict = {k1:{v[0]:v[1]} for k1, sub in enumerate(tg1) for v in sub}

но есть проблема в том, что он содержит не каждую пару.

Как мне это сделать?

Комментарии:

1. Вам нужно понимание вложенных словарей для создания вложенных словарей.

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

3. Это не понимание списка. Понимание списков создает списки .

Ответ №1:

Если вы хотите использовать понимание словаря, вы должны вложить его. В вашем подходе только одна пара ключ-значение попадает в ваш внутренний словарь, в котором вы на самом деле хотите, чтобы эта часть была самим пониманием. Что-то вроде этого сработало бы:

 d = {i:{k:v for k,v in sublist} for i, sublist in enumerate(l)}  

Предполагая l , что ваш список здесь.

Ответ №2:

Если у вас есть только эти уровни вложенности, вы можете сделать это с пониманием. С другой стороны, если у вас больше уровней, вам, вероятно, понадобится (рекурсивная) функция:

 D = { i:dict(L) for i,L in enumerate(yourList)}  {0: {1: 2, 3: 4},   1: {5: 6},   2: {7: 8, 9: 10, 10: 10}}  D[0][3] # 4 D[1][5] # 6