首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从简单Python列表创建带有嵌套值的JSON文件

如何从简单Python列表创建带有嵌套值的JSON文件
EN

Stack Overflow用户
提问于 2021-09-03 21:37:46
回答 2查看 265关注 0票数 1

我有一个类似这样的列表:

代码语言:javascript
运行
复制
id: 0 --------------------------------------------------------------------------------
Roma
Via Francesco Saverio Altamura
Via: 0
https://www.immobiliare.it/annunci/p-147276/
tipologia: Appartamento
m2: 113 m²
piano: 1°, con ascensore
p_edificio: 4 piani
prezzo: € 158.000 - € 270.000
balcone: 0
cantina: 0
terrazza: 0
giardino privato: 0
taverna: 0
esposizione esterna: 0
id: 1 --------------------------------------------------------------------------------
Roma
Monti
Via degli Zingari
https://www.immobiliare.it/annunci/89886713/
tipologia: Appartamento
m2: 113 m²
piano: 1°, con ascensore
p_edificio: 4 piani
prezzo: € 790.000
balcone: 0
cantina: 0
terrazza: 0
giardino privato: 0
taverna: 0
esposizione esterna: 0

我想要做的是以这种形式创建一个JSON文件,其中包含嵌套对象,如下所示:

代码语言:javascript
运行
复制
{
"id": "123": [
    "city": "Roma",
    "zone": "Via Francesco Saverio Altamura",
    "via": "0",
    "link": "https://www.immobiliare.it/annunci/p-147276/",
    "prezzo": "€ 158.000 - € 270.000"
    "addons": [
        {
            "balcone": "0",
            "terrazza": "0",
             and so on...
        },
    ]
]
}

我遇到的问题是键值部分。

我可以执行一个简单的操作:json.dump...,但它将为每个JSON对象转储一个项目列表。相反,我希望将id作为主要对象,并在其中包含所有其他信息。

这就是说,我的列表中有300个项目,我有5个id,然后全部归结为5个对象,每个对象都包含属于该id的项目。

你们知道什么简单的解决方案吗?谢谢!

EN

回答 2

Stack Overflow用户

发布于 2021-09-03 22:00:10

使用https://stackoverflow.com/a/69032525/1491895中的"Option 2: List JSON“将您的输入转换为字典列表。然后,您可以按公共id值对它们进行分组。

代码语言:javascript
运行
复制
dict_json = {}
for d in list_json:
    dict_json.setdefault(d['id'], []).append(d)

这将创建一个类似如下的结果:

代码语言:javascript
运行
复制
{
    "123": [{
        "id": "123",
        "city": "Roma",
        "zone": "Via Francesco Saverio Altamura",
        "via": "Via: 0",
        "link": "https://www.immobiliare.it/annunci/p-147276/",
        "addons": {
            "tipologia": "Appartamento",
            "m2": "113 m\u00b2",
            "piano": "1\u00b0, con ascensore",
            "p_edificio": "4 piani",
            "balcone": "0",
            "cantina": "0",
            "terrazza": "0",
            "giardino privato": "0",
            "taverna": "0",
            "esposizione esterna": "0"
        },
        "prezzo": "\u20ac 158.000 - \u20ac 270.000"
    },
    {
        "id": "123",
        "city": "Roma",
        "zone": "Monti",
        "via": "Via degli Zingari",
        "link": "https://www.immobiliare.it/annunci/89886713/",
        "addons": {
            "tipologia": "Appartamento",
            "m2": "113 m\u00b2",
            "piano": "1\u00b0, con ascensore",
            "p_edificio": "4 piani",
            "balcone": "0",
            "cantina": "0",
            "terrazza": "0",
            "giardino privato": "0",
            "taverna": "0",
            "esposizione esterna": "0"
        },
        "prezzo": "\u20ac 790.000"
    }]
}
票数 0
EN

Stack Overflow用户

发布于 2021-09-03 22:38:42

您可以获得如下解决方案:

代码语言:javascript
运行
复制
{
    "id": "123",
    "values": 
    {
        "city": "Roma",
        "zone": "Via Francesco Saverio Altamura",
        "via": "0",
        "link": "https://www.immobiliare.it/annunci/p-147276/",
        "prezzo": "€ 158.000 - € 270.000"
        "addons": 
            {
                "balcone": "0",
                "terrazza": "0",
                and so on...
            }
    }
}

如上所述创建字典,并使用以下命令将其转换为带有json库的json:

代码语言:javascript
运行
复制
import json


data = {
    "id": "123",
    "values": 
    {
        "city": "Roma",
        "zone": "Via Francesco Saverio Altamura",
        "via": "0",
        "link": "https://www.immobiliare.it/annunci/p-147276/",
        "prezzo": "€ 158.000 - € 270.000"
        "addons": 
            {
                "balcone": "0",
                "terrazza": "0",
                and so on...
            }
    }
}

json_data = json.dumps(data, indent = 4)

print(json_data)

(此示例用于打印您的json,如果您愿意,您可以生成json文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69050783

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档