我怎样才能扁平化一个字典列表?
Posted
技术标签:
【中文标题】我怎样才能扁平化一个字典列表?【英文标题】:How can I flat a list of dicts? 【发布时间】:2022-01-17 00:18:57 【问题描述】:我有一个字典,其中包含一个列表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
列表将始终只包含一项
【问题讨论】:
如果产品列表有多个条目怎么办? 不要命名字典dict
,这是一个python内置
产品列表总是只有一个产品,确实有点混乱,但是字段product
是一个列表,因为返回了一个Mongo查询
这能回答你的问题吗? Flat a list of containing only one dict
【参考方案1】:
假设子列表中只有一项,您可以使用以下字典理解:
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()
输出:
'product.codename': 'codename1',
'product.name': 'name1',
'product.category': 'category1',
'message': 'message1'
注意。如果您可以在列表中包含多个项目,请说明如何处理它们。
【讨论】:
谢谢@mozway,我试过了,效果很好!但是,我想将其设计为仅平整product
字段。我编辑我的问题以添加有关我的请求的更多详细信息和信息以上是关于我怎样才能扁平化一个字典列表?的主要内容,如果未能解决你的问题,请参考以下文章