Как из словаря создать другой словарь?
Есть список словарей вида:
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.