Создать словарь подмножества из списка словарей - PullRequest
0 голосов
/ 08 сентября 2018

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

d = [{'first':'jason','color':'green','age':22},
     {'first':'josh','color':'red','age':22},
     {'first':'chris','color':'blue','age':21}
    ]

Я хочу создать словарь, который является подмножеством предыдущих словарей.

Нечто похожее:

newD = {'jason':22, 'josh':22, 'chris':21}

Следующее делает трюк:

first = [k['first'] for k in d]
age = [k['age'] for k in d]
newD = dict(zip(first, age))

Но есть ли более питонский / более чистый способ сделать это?

Ответы [ 4 ]

0 голосов
/ 08 сентября 2018

Может быть, это?

newD = dict((x['first'], x['age']) for x in d)
0 голосов
/ 08 сентября 2018

Использование operator.itemgetter:

from operator import itemgetter

res = dict(map(itemgetter('first', 'age'), d))

{'jason': 22, 'josh': 22, 'chris': 21}
0 голосов
/ 08 сентября 2018

Да, вам нужно только одно понимание:

>>> {x['first']: x['age'] for x in d}
{'jason': 22, 'josh': 22, 'chris': 21}
0 голосов
/ 08 сентября 2018
newd = {dd['first']: dd['age'] for dd in d}

Выход:

In [3]: newd
Out[3]: {'chris': 21, 'jason': 22, 'josh': 22}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...