从python中的字典列表创建分层json转储

用户名

桌子:

categories = Table("categories", metadata,
                   Column("id", Integer, primary_key=True),
                   Column("name", String),
                   Column("parent_id", Integer, ForeignKey("categories.id"),
                          CheckConstraint('id!=parent_id'), nullable=True),

)

一个类别可以有多个子级,但只有1个父级。我得到了使用CTE的字典值列表如下:例如。对于id:14,parent为13,并且从parent 8-> 10-> 12-> 13-> 14遍历,其中parent 8没有父id。

[
    {
      "id": 14, 
      "name": "cat14", 
      "parent_id": 13, 
      "path_info": [
        8, 
        10, 
        12, 
        13, 
        14
      ]
    }, 
    {
      "id": 15, 
      "name": "cat15", 
      "parent_id": 13, 
      "path_info": [
        8, 
        10, 
        12, 
        13, 
        15
      ]
    }
  ]

我想将父级的属性也作为子类别嵌入列表中,如下所示:

{
  "id": 14, 
  "name": "cat14", 
  "parent_id": 13, 
  "subcats": [
       {
         "id: 8", 
         "name": "cat8", 
         "parent_id":null
       }, 
       {
         "id: 10", 
         "name": "cat10", 
         "parent_id":8
       },  
       {
         "id: 12", 
         "name": "cat12", 
         "parent_id":10
       },   
      and similarly for ids 13 and 14..... 
     ]
}, 
{
  "id": 15, 
  "name": "cat15", 
  "parent_id": 13, 
  "subcats": [
       {
         "id: 8", 
         "name": "cat8", 
         "parent_id":null
       }, 
       {
         "id: 10", 
         "name": "cat10", 
         "parent_id":8
       },  
       {
         "id: 12", 
         "name": "cat12", 
         "parent_id":10
       },   
       and similarly for ids 13, 14, 15..... 
     ]
}

]请注意,“ path_info”已从字典中删除,并且每个ID均已显示其详细信息。我想要具有上述缩进格式的json转储。怎么去?使用烧瓶0.10,Python 2.7

hilberts_drinking_problem

有一些列表/字典理解可以做到这一点。

lst = [{"id": 14, "name": "cat14", "parent_id": 13, "path_info": [8, 10, 12, 13, 14]}, {"id": 15, "name": "cat15", "parent_id": 13, "path_info": [8, 10, 12, 13, 15]}]

master_dct = { d['id'] : d for d in lst}
for d in lst:
    d['subcats'] = [{field : master_dct[i][field] for field in ['id', 'name', 'parent_id']} \
        for i in d['path_info'] if i in master_dct]

import json
with open('out.json', 'w') as f:
    json.dump(lst, f)

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在字典中添加键值对以在python中以JSON格式转储数据?

来自分类Dev

密钥的 Json 转储,在 Python 中配对

来自分类Dev

将Python字典转储到JSON文件

来自分类Dev

从Django JSON转储字典中获取JavaScript数组

来自分类Dev

将大型嵌套字典转储到 JSON 对象中

来自分类Dev

如何将对象列表转储到python django中的json中

来自分类Dev

JSON转储格式Python

来自分类Dev

Python 中包含元组的 dict 的 Json 转储

来自分类Dev

在python中创建字典列表

来自分类Dev

如何将字典和列表安全转储到YAML中?

来自分类Dev

将不匹配键的字典列表转储到csv文件中

来自分类Dev

在Python中根据JSON数据创建列表和字典

来自分类Dev

如何从嵌套在字典中的Django模型中获取格式正确的json转储?

来自分类Dev

将具有数组值的Python字典转储到CSV中

来自分类Dev

从字典列表中创建嵌套的json对象

来自分类Dev

Python 2.7 JSON转储UnicodeEncodeError

来自分类Dev

python json转储unicode错误

来自分类Dev

Python JSON转储附加字符

来自分类Dev

Python编码和JSON转储

来自分类Dev

使用json转储的python名称处理

来自分类Dev

Python:Json转储转义报价

来自分类Dev

从json转储中抓取元素

来自分类Dev

在Spark中创建分层JSON

来自分类Dev

从Python中的字典列表创建列表字典

来自分类Dev

通过转储python列表,创建一个python“ .py”文件,该文件返回相同的python列表

来自分类Dev

如何将列表中的元组转储到Python中的文本文件

来自分类Dev

将数据框中的列数据转储到python中的列表

来自分类Dev

转储字典后,csv文件中的值丢失

来自分类Dev

在Python中从XML创建字典列表

Related 相关文章

热门标签

归档