Как из словаря создать другой словарь?

Есть список словарей вида:

lst = [
{'name': 'Bruce Willis', 'age': '65', 'height': '183'},
{'name': 'Charles Chaplin', 'age': '131', 'height': '163'},
{'name': 'Jennifer Lawrence', 'age': '30', 'height': '175'}
]

Нужно из такого словаря создать новый словарь такого вида:

{
'Bruce Willis' : {'age': '65', 'height': '183'},
'Charles Chaplin' : {'age': '131', 'height': '163'},
'Jennifer Lawrence' : {'age': '30', 'height': '175'}
}

Пытаюсь обойти словари таким кодом, но споткнулся с присвоением значения в виде другого словаря:

newDict = {}  
for elem in lst:
    if elem.get('name') not in newDict:
        newDict[elem.get('name')] = {}
    else:
        newDict[elem.get('name')] = {elem.get('age') = } ????

Вот тут запнулся, не могу понять, как добавить значения в виде словаря. Помогите разобраться и подскажите (если можно, то без генераторов и лямбд). Спасибо.


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

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

Пример:

li = [
    {'name': 'Bruce Willis', 'age': '65', 'height': '183'},
    {'name': 'Charles Chaplin', 'age': '131', 'height': '163'},
    {'name': 'Jennifer Lawrence', 'age': '30', 'height': '175'}
]

d = {}
for x in li:
    name = x['name']
    del x['name']

    d[name] = x
print(d)

stdout:

{'Bruce Willis': {'age': '65', 'height': '183'}, 'Charles Chaplin': {'age': '131', 'height': '163'}, 'Jennifer Lawrence': {'age': '30', 'height': '175'}}
→ Ссылка
Автор решения: MarianD
newDict = {item.pop('name'): item for item in lst}

Объяснение:

Это так называемый генератор словаря — начинайте читать с конца, с for item in lst:

«Для всякого элемента item в списке (словарей) lst включите item.pop('name'): item в этот (сейчас создаваемый) словарь.»

Метод pop('name') возвращает значение ключа 'name', устраняя его из словаря item.

→ Ссылка