从词典列表创建词典子集

时间:2018-09-07 22:08:42

标签: python dictionary

我有一个字典列表,如下所示:

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))

但是有没有更Pythonic /更干净的方法可以做到这一点?

4 个答案:

答案 0 :(得分:5)

newd = {dd['first']: dd['age'] for dd in d}

输出:

In [3]: newd
Out[3]: {'chris': 21, 'jason': 22, 'josh': 22}

答案 1 :(得分:3)

是的,您只需要一种理解:

>>> {x['first']: x['age'] for x in d}
{'jason': 22, 'josh': 22, 'chris': 21}

答案 2 :(得分:3)

也许是吗?

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

答案 3 :(得分:1)

使用operator.itemgetter

from operator import itemgetter

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

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