扁平化仅包含一个 dict 的列表

Posted

技术标签:

【中文标题】扁平化仅包含一个 dict 的列表【英文标题】:Flat a list of containing only one dict 【发布时间】:2022-01-17 15:58:07 【问题描述】:

我有一个字典,其中包含一个列表product,它只包含一个字典:

d = 
    "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 列表变平以获得这个:

d = 
    "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 列表将始终只包含一项

【问题讨论】:

【参考方案1】:

您可以展平内部字典并将其更新回原始字典。 例如,

product = d.pop("product")[0]
flattened = f"product.key": value for key, value in product.items()
d.update(flattened)

这应该可以解决问题。

【讨论】:

哦,确实这是一个非常聪明的方法,谢谢@Kris!

以上是关于扁平化仅包含一个 dict 的列表的主要内容,如果未能解决你的问题,请参考以下文章

使用 pandas json_normalize 扁平化包含多个嵌套列表的字典列表

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

扁平化列表列表,用特定值替换空子列表

数据结构与算法之深入解析“扁平化多级双向链表”的求解思路与算法示例

为啥扁平列表中的空白项目

2021-11-08:扁平化嵌套列表迭代器。给你一个嵌套的整数列表 nestedList 。每个元素要么是一个整数,要么是一个列表;该列表的元素也可能是整数或者是其他列表。请你实现一个迭代器将其扁平化