Как преобразовать список в словари

Подскажите как преобразовать список в словари. Пример списка:

list = [1, a,b,c,d, 2, a,b,c,d, 3, a,b,c,d]

Что я хочу получить:

list = { 1 : {a : b, c : d}
         2 : {a : b, c : d}
         3 : {a : b, c : d} }

Может подскажите где лучше изучить эту тему. Для чайников.


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

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

Я вот не уверен, что код ниже подойдет для "чайников", но, по крайней мере, будете знать, куда смотреть:

from itertools import groupby

lst = [10, "a", "b", "c", "d", 2, "a", "b", "c", "d", 3, "a", "b", "c", "d"]
vals = [list(y) for _, y in groupby(lst, key=lambda x: type(x)==str)]
d = dict((zip(map(lambda x: x[0],vals[::2]), vals[1::2])))

for k in d.keys():
    d[k] = {d[k][i]: d[k][i + 1] for i in range(0, len(d[k]), 2)}
print(d)

{10: {'a': 'b', 'c': 'd'}, 2: {'a': 'b', 'c': 'd'}, 3: {'a': 'b', 'c': 'd'}}

→ Ссылка
Автор решения: splash58

Похож на @strawdog, но я не занимался плагиатом :)

lst = [1, 'a','b','c','d', 2, 'e','f']
i = [list(x) for _, x in groupby(lst, key=lambda x: isinstance(x, int))]
d = {x[0]:dict(zip(y[::2], y[1::2])) for x,y in zip(i[::2], i[1::2])}
print(d) # {1: {'a': 'b', 'c': 'd'}, 2: {'e': 'f'}} 
→ Ссылка