字典列表 - 如何组合字典列表 Python

用户1511808
a =[{
    "id":"1",
    "Name":'BK',
    "Age":'56'
},
{
    "id":"1",
    "Sex":'Male'
},
{
    "id":"2",
    "Name":"AK",
    "Age":"32"
}]

我有一个字典列表,其中一个人信息在多个字典中拆分为上面的前 id 1 的信息包含在前 2 个字典中,我怎样才能得到下面的输出

{1: {'Name':'BK','Age':'56','Sex':'Male'}, 2: { 'Name': 'AK','Age':'32'}}
理查德·多德森

您可以使用一些内置函数。groupby 按 id 对字典进行分组,然后是一个 defaultdict 来收集结果。

from itertools import groupby
from collections import defaultdict

a =[{ "id":"1", "Name":'BK', "Age":'56' }, { "id":"1", "Sex":'Male' }, { "id":"2", "Name":"AK", "Age":"32" }]

results = defaultdict(dict)
key = lambda d: d['id']
for group_id, grouped in groupby(sorted(a, key=key), key=key):
    for d in grouped:
        d.pop('id')
        results[group_id].update(**d)

这给了你:

>>> results
defaultdict(<type 'dict'>, {'1': {'Age': '56', 'Name': 'BK', 'Sex': 'Male'}, '2': {'Age': '32', 'Name': 'AK'}})

defaultdict 类型的行为与普通 dict 类似,不同之处在于当您引用未知值时,将返回默认值。这意味着随着字典a的迭代,值(除了id)会更新到现有字典或自动新创建的字典上。

collections.defaultdict 是如何工作的?

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章