Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 11, 2020 07:21:40

DuffyDuck
Зарегистрирован: 2020-09-07
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Получить словарь из списка, который состоит из словарей

 d1 = [{'imya': 'Ben', 'height': 178},
     {'imya': 'Anna', 'height': 168},
     {'imya': 'Mark', 'age': 32},
     {'car': 'bmw', 'color': 'black'},
     {'imya': 'Jane', 'height': 167}
     ]
d2 = {}
for i in d1:
    name = i['imya']
    height = i['height']
    d2[name] = d2.get(name, 0) + height

d2 должен иметь такой вид:
 {'Ben': 178, 'Anna': 168, 'Mark': 0, 'Jane': 167}
Метод get() у Марка спотыкается на ключе ‘age’. Как сделать условие, чтобы Питон игнорировал все ключи, кроме ‘imya’ и ‘height’

Офлайн

#2 Ноя. 11, 2020 09:28:56

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9882
Репутация: +  853  -
Профиль   Отправить e-mail  

Получить словарь из списка, который состоит из словарей

  
>>> d1 = [{'imya': 'Ben', 'height': 178},
...       {'imya': 'Anna', 'height': 168},
...       {'imya': 'Mark', 'age': 32},
...       {'car': 'bmw', 'color': 'black'},
...       {'imya': 'Jane', 'height': 167}]
>>> 
>>> out = {d['imya']: d.get('height', 0)
...        for d in filter(lambda i: 'imya' in i, d1)}
>>> out
{'Ben': 178, 'Anna': 168, 'Mark': 0, 'Jane': 167}
>>>



Онлайн

#3 Ноя. 11, 2020 09:32:36

DuffyDuck
Зарегистрирован: 2020-09-07
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Получить словарь из списка, который состоит из словарей

py.user.next
out = {d: d.get('height', 0)
… for d in filter(lambda i: ‘imya’ in i, d1)}

Спасибо большое!

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version