Как преобразовать строку во вложенные словари в python (выражение генератора)?

#python #generator-expression

#python #генератор-выражение

Вопрос:

вот входная строка:

 s = 'Iva paper 10,Nelson pens 5,Oleg marker 3,Sasha paper 7,Mark envelope 20'
 

Я хотел бы получить такой результат:

 {'Iva': {'paper': 10},
'Mark': {'envelope': 20},
'Nelson': {'pens': 5},
'Oleg': {'marker': 3},
'Sasha': {'paper': 7}}
 

код, который может это сделать:

 for k in s.split(','):
    v = k.split(' ')
    d[v[0]] = {v[1]: int(v[2])}  
 

но вопрос в том, как я могу это сделать, используя выражение генератора?

Если бы у тебя было 2 элемента ( 'paper 5,pen 6,...' ) Я мог бы сделать это

 d = dict((k, int(v)) for k, v in (e.split(' ') for e in s.split(',')))
 

Интересно, как мы можем это сделать в этом случае!

Спасибо

Ответ №1:

 s = 'Iva paper 10,Nelson pens 5,Oleg marker 3,Sasha paper 7,Mark envelope 20'

g = dict((j, dict([(k, l)])) for i in s.split(',') for j, k, l in (i.split(' '),))

#{'Iva': {'paper': '10'}, 'Nelson': {'pens': '5'}, 'Oleg': {'marker': '3'}, 'Sasha': {'paper': '7'}, 'Mark': {'envelope': '20'}}
print(g)