Python基础算法:使用python计算json字符串的最大层级

1、首先是输入,我写了一个json文件来作为输入,结构如下

{
    "第一级" : {
        "第二级第1个" : "null",
        "第二级第2个" : {
            "第三级第1个" : "null"
        },
        "第二级第3个" : {
            "第三级第2个" : "null",
            "第三级第3个" : {
                "第四级第1个" : "null",
                "第四级第2个" : "null"
            }
        },
        "第二级第4个" : {
            "第三级第4个" : "null",
            "第三级第5个" : "null",
            "第三级第6个" : "null"
        },
        "第二级第5个" : "null",
        "第二级第6个" : "null"
    }
}

        没有子级的json属性我写的是null,为了方便判断当前键的属性是不是json,不要太在意。

2、求层级

        一个不规则的树形结构,有多个不同深度的分支,我们首先要想办法把这些不同的深度进行一个比较,才能得到最深的分支的值,代码如下:

        先将json转换为python字典,方便后续使用:

# 读取json文件
filepath = 'G:/0073/readjsontest.json'

obj = open(filepath, mode='r', encoding='utf-8')

# 转换为python字典
JsonData = obj.read()

         然后对字典进行递归遍历,在比较值为非null时,将值(子字典)进行递归,并对叠加变量+1,在对所有子级遍历完成后,函数会逐级比较大小,留下较大的层级值,存放在maxh变量中,最后将其返回:

def getJsonSize(jsondata, h = 1, maxh = 0, size = 0):
# 遍历 字典 中的 键值对
	for tmp in jsondata:
        
        # 如果 值 为字典则深度 +1 进行递归
		if jsondata[tmp] != "null":
            # 接收深度 接收保存的最大深度
			size, maxh = getJsonSize(jsondata[tmp], h + 1, maxh)
        
        # 判断此分支深度是否大于已保存的最大深度
		if size >= maxh:
			maxh = size
    # 返回最大深度
	return h, maxh

3、输出

        运行后输出如下,最大层级为4,符合最上面输入的json文件中的json字符串的最大深度:

         第二个返回值就是此json的最大深度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值