Как преобразовать список в словари
Подскажите как преобразовать список в словари. Пример списка:
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'}}