繁体   English   中英

我怎样才能扁平化一个字典列表?

[英]How can I flat a list of dicts?

我有一个字典,其中包含一个仅包含一个字典的列表product

dic = {
    "thickness": 90.0,
    "mass_surf": 37.8,
    "res_therm": 0.75,
    "codename": "codename1",
    "category": "category1",
    "sub_categories": [
        "sub_categories1"
    ],
    "secondary_targets": [
        "secondary_targets1",
        "secondary_targets2",
        "secondary_targets3"
    ],
    "product": [
        {
            "codename": "codename1",
            "purpose": "purpose1",
            "category": "category1",
            "material": "material1"
        }
    ]
}

我想扁平化 dict 的product列表来获得这个:

dic = {
    "thickness": 90.0,
    "mass_surf": 37.8,
    "res_therm": 0.75,
    "codename": "codename1",
    "category": "category1",
    "sub_categories": [
        "sub_categories1"
    ],
    "secondary_targets": [
        "secondary_targets1",
        "secondary_targets2",
        "secondary_targets3"
    ],
    "product.codename": "codename1",
    "product.purpose": "purpose 1",
    "product.purpose": "purpose1",
    "product.category": "category1",
    "product.material": "material1"
}

我怎样才能做到这一点?

product列表将始终只包含一项

假设您在子列表中只有一项,您可以使用以下字典理解:

out = {'.'.join([k1,k2]) if k2 else k1: v2
       for k1,v1 in d.items()
       for k2,v2 in (v1[0] if isinstance(v1, list) else {None: v1}).items()
       }

output:

{'product.codename': 'codename1',
 'product.name': 'name1',
 'product.category': 'category1',
 'message': 'message1'}

注意。 如果您可以在列表中包含多个项目,请说明如何处理它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM