当前位置: 首页 > article >正文

Python提取目标Json键值:包含子嵌套列表和字典

目标:取json中所有的Name、Age字典

思路:递归处理字典中直接包含子字典的情况,

import json


def find_targ_dicts(data,key1,key2):
    result = {}
    if isinstance(data, dict):
        if key1 in data and key2 in data: # 第一层字典中包含key1和key2
            result[key1] = data[key1]
            result[key2] = data[key2]
            yield result
        for k, v in data.items():
            yield from find_targ_dicts(v, key1, key2) # 递归处理子字典
    elif isinstance(data, list):
        for item in data:
            yield from find_targ_dicts(item, key1, key2)


# 示例JSON数据
json_data = '''
{
    "name": "mkdm",
    "age": 30,
    "children": [
        {
            "name": "Ace",
            "age": 10
        },
        {
            "name": "Bob",
            "age": 8
        },
        {
            "tt":{"name": "coh",
            "age": 9}
        }
    ],
    "address": {
        "city": "shbj",
        "addr": "sccd"
    }
}
'''

# 将JSON字符串转换为Python对象
data = json.loads(json_data)

# 提取所有的字典
dicts = list(find_targ_dicts(data,'name','age'))
print(dicts)
# 打印所有的字典
for d in dicts:
    print(d)

结果截图:


http://www.kler.cn/a/466205.html

相关文章:

  • 「Java 数据结构全面解读」:从基础到进阶的实战指南
  • 一文讲明白朴素贝叶斯算法及其计算公式(入门普及)
  • halcon三维点云数据处理(五)创建代表工具和机器人底座的3D模型
  • IDEA 撤销 merge 操作(详解)
  • C++:范围for
  • Android GameActivity(NativeActivity)读写文件
  • DAY178内网渗透之内网对抗:横向移动篇入口差异切换上线IPC管道ATSC任务Impacket套件UI插件
  • 机器学习和深度学习
  • IDEA自带插件禁用,减少内存占用
  • 快速理解MIMO技术
  • 讲解一下$.ajax
  • 如何向您的网站添加 SSL 证书?
  • QT------------------串口编程
  • 计算机网络 (21)网络层的几个重要概念
  • 【机器学习:一、机器学习简介】
  • 首都旅游逐绿焕新!苏州金龙新V系客车助推北京旅游客运加速转型
  • Wonder Dynamics技术浅析(七):细节优化
  • 《庐山派K230 从入熟悉到...》获取图像,获取一张照片
  • 使用Python实现患者数据分析:探索健康管理的新路径
  • Fabric环境部署
  • 二、CSS基础
  • 沙箱模拟支付宝支付3--支付的实现
  • 大数据系列之:深入理解学习使用腾讯COS和COS Ranger权限体系解决方案,从hdfs同步数据到cos
  • 第 22 章 处理 XML
  • Linux网络 | 理解Web路径 以及 实现一个简单的helloworld网页
  • Ubuntu20.04 Qt5.14.2 交叉编译RK3588 单独编译qtwebsockets模块