首页 > 编程语言 >【Python】递归获取嵌套json 的所有key及value值

【Python】递归获取嵌套json 的所有key及value值

时间:2023-02-16 14:13:01浏览次数:47  
标签:__ recur Python self value json result data datas

 代码

class recurPostDict:
    """ 递归获取多维嵌套字典所有层级的key和value """

    def __init__(self, datas):
        self.datas = datas

    def recur_data(self, data, result=""):
        """多维/嵌套字典数据无限遍历,获取所有key层和value"""
        # 使用isinstance检测数据类型:字典类型
        if isinstance(data, dict):
            for k, v in data.items():
                if result == "":
                    self.recur_data(v, k)
                else:
                    self.recur_data(v, result+"_%s" % str(k))
        # 列表或元组类型
        elif isinstance(data, (list, tuple)):
            for i in range(len(data)):
                # 自我调用实现无限遍历,多个时后缀字母开头
                self.recur_data(data[i], result+"_%s" % public_tools.forward("a", i))
        else:
            # print(result + "=" + str(data))
            self.datas[result] = str(data)

 

运行:

if __name__ == "__main__":
    dic = {"name": "zhangsan", "address": {"sheng": "beijing", "shiji": "beijing", "shiqu": ["shijingshan", "p"], "qu": {"1dong": "1", "2dong": "2"}}}
    t = recurPostDict({})  # 传入空字典{},即datas初始值为{}
    t.recur_data(dic, result="")  # 执行过程
    print(t.datas)
    print(t.datas.keys())
    print(t.datas.values())

 

 执行结果

 

 

 

 

public_tools.forward() 字母表循环迭代实现地址:https://www.cnblogs.com/phoenixy/p/17126439.html

 

标签:__,recur,Python,self,value,json,result,data,datas
From: https://www.cnblogs.com/phoenixy/p/17126455.html

相关文章

  • Python导出项目依赖包
    只导出当前项目依赖包1、安装pipreqs:pipinstallpipreqs2、进入当前项目目录下,导包:pipreqs./(导包完成会生成一个requirements.txt文件)3、安装依赖的时候使用:pip......
  • Python实现随机森林RF并对比自变量的重要性
      本文介绍在Python环境中,实现随机森林(RandomForest,RF)回归与各自变量重要性分析与排序的过程。  其中,关于基于MATLAB实现同样过程的代码与实战,大家可以点击查看MATLA......
  • 对服务器进行心跳检测 python django
    (由于春节期间连不上服务器,但又不知道是不是服务器关机了,因此写一个心跳检测功能遇到问题时可以排查部分原因)具体来说分为客户端和服务端,客户端为校园服务器,服务端为我们自......
  • Python装饰器实例讲解(三)
    Python装饰器实例讲解(三)本文多参考《流畅的python》,在此基础上增加了一些实例便于理解姊妹篇Python装饰器实例讲解(一),让你简单的会用Python装饰器实例讲解(二),主要......
  • python3常用模块和方法
    1、使用索引反转字符串str="hello"print(str[::-1])2、zip函数获取可迭代对象,将它们聚合到一个元组中,然后返回结果。语法是zip(*iterables)numbers=[1,2,3]strin......
  • apriori算法 python实现
    fromtypingimport*fromtypingimportList,TuplefromitertoolsimportcombinationsdefloadDataSet():return[{1,2,4,5},{2,3,5},{1,2,3,5},......
  • python数据类型
    python数据类型:Number(数字): int、float、bool、complex(复数)String(字符串)List(列表)Tuple(元组)Set(集合)Dictionary(字典)如何查看数据类型:使用type()函数查看数据类型,例......
  • 用Python制作各种用途的二维码
    当你提到二维码时,大多数人想到的是仓库管理或产品标签等"工业"应用,但这篇文章在很大程度上是关于二维码的个人和社会用途。有趣的事实二维(QR)码是在1994年发明的,最近几......
  • python gz解压
    defdecompose_file(data):#ungz_file_path=gz_file_path.replace(".gz","")#withgzip.open(gz_file_path,'rb')asf_in:#withopen(ungz_fil......
  • python 识别二维码内容 及pyzbar OSError: [WinError 126] 报错解决
    importcv2frompyzbar.pyzbarimportdecodeqrcode_image=cv2.imread('bbb.png')aa=decode(qrcode_image)printaa 如果Windows安装pyzbar后遇到OSError:[......