Преобразовать список в словарь
Как из списка:
['2018-01-01', 'yandex', 'cpc', 100]
сделать такой словарь?:
{'2018-01-01': {'yandex': {'cpc': 100}}}
Ответы (3 шт):
Автор решения: nomnoms12
→ Ссылка
Решение через рекурсию для произвольного количества элементов:
def get_d(li: list) -> dict:
if len(li) == 1:
return li[0]
return {li[0]: get_d(li[1:])}
li = ['2018-01-01', 'yandex', 'cpc', 100]
print(get_d(li))
stdout:
{'2018-01-01': {'yandex': {'cpc': 100}}}
Автор решения: extrn
→ Ссылка
Через левую свертку (за неимением правой)
from functools import reduce
data = ['2018-01-01', 'yandex', 'cpc', 100]
print(reduce(lambda val, key: {key: val}, reversed(data)))
{'2018-01-01': {'yandex': {'cpc': 100}}}
Автор решения: Pavel Durmanov
→ Ссылка
In [17]: l = ['2018-01-01', 'yandex', 'cpc', 100]
In [18]: last = l.pop()
In [19]: for i in reversed(l):
...: last = {i: last}
...:
In [20]: last
Out[20]: {'2018-01-01': {'yandex': {'cpc': 100}}}