#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