Python内嵌列表格式化

stackoverflow上的一个问题:

把下面的格式:

[{
    "id": 1,
    "title": "node1",
    "parent": "null"},{
    "id": 2,
    "title": "node2",
    "parent": 1},{
    "id": 3,
    "title": "node3",
    "parent": 1},{
    "id": 4,
    "title": "node4",
    "parent": 2},{
    "id": 5,
    "title": "node5",
    "parent": 2}]

更改为:

    [{
      ‘id‘:1,
      ‘title‘:‘node1‘,  
      ‘childs‘:[  
         {  
            ‘id‘:2,
            ‘title‘:‘node2‘
            ‘childs‘:[  
               {  
                  ‘id‘:4,
                  ‘title‘:‘node4‘,
                  ‘childs‘: []
               },
               {  
                  ‘id‘:5,
                  ‘title‘:‘node5‘,
                  ‘childs‘: []
               }
            ]
         },
         {  
            ‘id‘:3,
            ‘title‘:‘node3‘
            ‘childs‘:[]
         }
      ]
   }]

相关代码:(主要用了python对象的可变性,如dict,list都是可变的.这样对于数据的深度可以简化)

result, t = [], {}

for i in k:    # k 为上面的数据, k 建议按 parent 排序一下
    i[‘childs‘] = []
    if i[‘parent‘] == ‘null‘:
        del i[‘parent‘]
        result.append(i)
        t[1] = result[0]
    else:
        t[i[‘parent‘]][‘childs‘].append(i)
        t[i[‘id‘]] = t[i[‘parent‘]][‘childs‘][-1]
        del t[i[‘parent‘]][‘childs‘][-1][‘parent‘]

print result

结果:

Z:\DOWNLOAD>k.py
[{‘childs‘: [{‘childs‘: [{‘childs‘: [], ‘id‘: 4, ‘title‘: ‘node4‘}, {‘childs‘: [
], ‘id‘: 5, ‘title‘: ‘node5‘}], ‘id‘: 2, ‘title‘: ‘node2‘}, {‘childs‘: [], ‘id‘:
 3, ‘title‘: ‘node3‘}], ‘id‘: 1, ‘title‘: ‘node1‘}]
时间: 2024-10-19 20:43:46

Python内嵌列表格式化的相关文章

Python内嵌函数

局部变量 def discount(price, rate): final_price = price * rate return final_price old_price = float(input('请输入原价:'))    全局变量 rate = float(input('请输入折扣率:')) new_price = discount(old_price, rate) print('打折后的价格是:',new_price) print('打印局部变量final_price的值:',fin

python 内嵌模块——time

其实很简单,在python中,时间无非就以下两种形式的存在方式:time,一般有两种时间形式:1.时间戳:相对于1970.1.1 00:00:00 以秒计算的偏移量2.元组形式:struct_time time模块的方法有:time.clock() :第一次调用返回一个从程序被调用,创建程序进程到clock()函数调用之间的cpu时间计时单位第二次调用,返回的是自第一次调用后,到这次调用的时间间隔 time.sleep() :线程推迟指定的时间运行 time.ctime() :讲一个时间戳(默认

python 内嵌函数

def func1(): print('func1()正在被调用') def func2(): print('func2()正在被调用') func2() return 5 print(func1()) 原文地址:https://www.cnblogs.com/ssxsy/p/9127508.html

Python自学之函数内嵌和闭包

函数内嵌指一个函数内部包含定义另一个函数举例: >> def fun1():print('fun1()正在被调用...')def fun2():print('fun2()正在被调用...')fun2() >> fun1()fun1()正在被调用...fun2()正在被调用...>> fun2()Traceback (most recent call last):File "<pyshell#7>", line 1, in <modu

Selenium2+python自动化26-js处理内嵌div滚动条

前言 前面有篇专门用js解决了浏览器滚动条的问题,生活总是多姿多彩,有的滚动条就在页面上,这时候又得仰仗js大哥来解决啦. 一.内嵌滚动条 1.下面这张图就是内嵌div带有滚动条的样子,记住它的长相. 2.页面源码如下:(老规矩:copy下来,用文本保存下来,后缀改成.html,用浏览器打开) <!DOCTYPE html><meta charset="UTF-8"> <!-- for HTML5 --><meta http-equiv=&qu

Web前端技术:CSS部分初识--行内样式、内嵌样式、外部样式,CSS的优先级,CSS的选择器,各种CSS样式(文本与文字、颜色的表示、背景的设置、超链接、列表、表格、图片)

一.CSS样式 1.行内样式:直接写在body的内部标签里,如下就是行内样式 2.内嵌样式:写在head的style标签内,如下就是内嵌样式 3.外部样式:css样式单独写在一个.css文件里,使用时,在HTML的head内用link标签引用即可 二.CSS的优先级 三.CSS的选择器 选择器是一种选择方式.选中你想要的元素的方法,称之为“选择器”  1.全局选择器:*  2.标签选择器:p.span.a.h1~h6.ul.ol  3.类选择器:.one  4.id选择器:#left  5.后代

Windows10内嵌Ubuntu子系统配置python开发环境

Windows10内嵌Ubuntu子系统配置python开发环境 安装pycharm. 到intellij idea网站下载Linux环境下载免费的pycharm,通过ubuntu子系统内部的/mnt目录获取windows系统下载的pycharm压缩文件. 将pycharm压缩文件移动到/opt目录下.这个目录是用来存放所有使用压缩包方式安装的软件. 解压pycharm压缩文件,使用远程桌面方式连接ubuntu,运行bin目录下的pycharm.sh.在我的环境中,直接运行/opt/pychar

python 的内嵌time模板翻译及说明[转]

一.简介 time模块提供各种操作时间的函数  说明:一般有两种表示时间的方式:       第一种是时间戳的方式(相对于1970.1.1 00:00:00以秒计算的偏移量),时间戳是惟一的       第二种以数组的形式表示即(struct_time),共有九个元素,分别表示,同一个时间戳的struct_time会因为时区不同而不同    year (four digits, e.g. 1998)    month (1-12)    day (1-31)    hours (0-23)  

Selenium2+python自动化26-js处理内嵌div滚动条【转载】

前言 前面有篇专门用js解决了浏览器滚动条的问题,生活总是多姿多彩,有的滚动条就在页面上,这时候又得仰仗js大哥来解决啦. 一.内嵌滚动条 1.下面这张图就是内嵌div带有滚动条的样子,记住它的长相. 2.页面源码如下:(老规矩:copy下来,用文本保存下来,后缀改成.html,用浏览器打开) <!DOCTYPE html><meta charset="UTF-8"> <!-- for HTML5 --><meta http-equiv=&qu