Python 3 中的递归搜索 JSON/DICT

2024-05-13

我在 Python 3 中实现了一些 API,这些 API 允许我根据班级代码接收有关学校的信息。但我想知道如何通过类代码获取信息。 例子: 我输入代码GF528S我希望程序告诉我班级(3C INF)、地址(Address 1, Milan),如果可能的话还包括学校名称(Test School 1) 和之前的键。提前致谢!当然我使用 JSON 结构:

{
    "schools": {
         "Lombardia": {
            "Milano": {
                "Milano": {
                    "Test School 1": {
                        "sedi": {
                            "0": {
                                "indirizzo": "Address 1, Milan",
                                "classi": {
                                    "INFORMATICA E TELECOMUNICAZIONI": {
                                        "3C INF": "GF528S"
                                    }                                    
                                }
                            },
                            "1": {
                                "indirizzo": "Address 2, Milan",
                                "classi": {
                                    "INFORMATICA E TELECOMUNICAZIONI": {
                                        "1A IT": "HKPV5P", 
                                        "2A IT": "QL3J3K",
                                        "3A INF": "X4E35C",
                                        "3A TEL": "ZAA7LC"
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }   
    }
}

当我从数据库中获取值时,如果有帮助的话,它们会被转换为 python 字典! 经过一系列测试,感谢您的回答,我发现for in .items()当显示时被阻止indirizzo场地: 特别是,它无法在这些词典中搜索:

{'classi': {'INFORMATICA E TELECOMUNICAZIONI': {'3C INF': 'GF528S'}}, 'indirizzo': 'Address 1, Milan'}
{'classi': {'INFORMATICA E TELECOMUNICAZIONI': {'1A IT': 'HKPV5P', '2A IT': 'QL3J3K', '3A INF': 'X4E35C', '3A TEL': 'ZAA7LC'}}, 'indirizzo': 'Address 2, Milan'}

我认为问题恰恰在于indirizzo场地。如果你想先执行 for 操作,可以将其保存在变量中并从 json 中删除:

del val ["address"]

问题是我无法将地址与班级关联起来。 代码:

def dictionary_check(input):
    indirizzo = ""
    for key,value in input.items():
        if isinstance(value, dict):
            dictionary_check(value)
        else:
            for i in value:
                indirizzo += i["indirizzo"]
                del i['indirizzo']
                for x, y in i.items():
                    for z, j in y.items():
                        for a in j.items():
                            if a[1] == "HKPV5P":
                                print(indirizzo)
                                print("Classe: " + a[0])

虽然我无法为您编写确切的代码,但我认为能够让您大致了解代码的样子以及一些指导是合理的。

我不知道这个 JSON 数据是从哪里获取的。因此,当您的应用程序运行时,它可能有更多/更少的键。但是,假设 json 与原样完全相同,并且 json 数据已加载到变量(假设为 json_map),则访问特定值类似于:

json_map[key_value]

所以你想做类似的事情

json_map['schools']['Lombardia']['Milano']

和更多按键,直到找到您想要使用的字典。

我认为您可能会感到困惑的一点是 - 如果您有多个值(您可能不知道它们可能是什么样子)您如何处理它。例如,我认为键“sedi”(我认为它意味着位置)可能会返回多个位置(即学校),并且您不会知道它们的键/值是什么。在这种情况下,您可能希望通过以下方式迭代该字典:

for key, value in dict_.items():
    # do your action

key 可能是一个整数(字符串格式),value 可能是另一个字典。您需要检查字典的特定属性,看看它是否是您要查找的属性。

另外,最后,当您访问位置的“INFORMATICA E TELECOMUNICAZIONI”字典时,您可能希望返回具有相应值的项目的键。就像是:

for key, value in dict_.items():
    if value == 'GF528S':
        return key

当然,您可以将“GF528S”的值替换为变量,以便每次都可以更改它。

我认为这就是我在不实际实施的情况下可以为您提供的帮助。当我刚开始编程时,我相信你和我一样,我只需要有人给我一个大致的轮廓,告诉我该做什么。如果需要更多帮助,我认为您可能需要找一个了解如何在现实生活中做什么的人,或者聘请一位导师/老师来教您编程的基本概念。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 3 中的递归搜索 JSON/DICT 的相关文章

  • 插入多行并返回主键时 Sqlalchemy 的奇怪行为

    插入多行并返回主键时 我注意到一些奇怪的事情 如果我在 isert 查询中添加使用参数值 我会得到预期的行为 但是当将值传递给游标时 不会返回任何内容 这可能是一个错误还是我误解了什么 我的sqlachemy版本是0 9 4 下面如何重现错
  • 为什么具有复杂无穷大的 NumPy 运算会导致有趣的结果?

    我注意到复杂的无穷大的有趣结果 In 1 import numpy as np In 2 np isinf 1j np inf Out 2 True In 3 np isinf 1 1j np inf Out 3 True In 4 np
  • Python 3.4.3 subprocess.Popen 在没有管道的情况下获取命令的输出?

    我试图将命令的输出分配给变量 而不让命令认为它正在通过管道传输 原因是 如果正在通过管道传输 则相关命令会给出未格式化的文本作为输出 但如果从终端运行 则会给出颜色格式化的文本 我需要获取这种颜色格式的文本 到目前为止我已经尝试了一些事情
  • 生产环境的 Flask-Login 与 Flask-Security

    我正在构建一个功能 供用户注册 登录 验证和授权自己 特别是使用 Python Flask 作为后端 我找到了一些解决方案 例如flask login and flask security 据我了解 flask login实际上并没有进行任
  • JSON对象的长度[重复]

    这个问题在这里已经有答案了 该函数生成一个包含 json 对象的数组 var estoque function unpack estoque tnm total estoque vl id tid st tnm tnm split tota
  • Python控制台默认十六进制显示

    我在 Python 控制台中做了很多工作 其中大部分都涉及地址 我更喜欢以十六进制形式查看地址 So if a 0xBADF00D 当我简单地输入Python gt a进入控制台查看其值 我更喜欢 python 回复0xBADF00D代替1
  • 自定义信号的声明

    在 Qt 中 我们可以通过将自定义信号设为静态变量来创建它们 然后我们使用self signame反而classname signame 这样就在类中创建了一个实例变量 我想了解这种模式之外的理论 这是我尝试过的一些伪代码 这些伪代码已记录
  • Tensorflow 到 ONNX 的转换

    我目前正在尝试转换我使用本教程创建的已保存 且正在工作 的 pb 文件 https github com thtrieu darkflow https github com thtrieu darkflow 到 onnx 文件中 我目前正在
  • PyCharm 输出错误消息散布在控制台输出中。如何解决这个问题?

    我正在运行 PyCharm 社区版 4 0 4 有谁知道为什么控制台输出后不显示错误消息 Thanks C Python27 python exe F Google Drive code python scripts leetcode lc
  • 计算二维笛卡尔坐标中不规则形状的边界

    我正在寻找一种计算不规则形状边界的解决方案 Lats take a look at Square example 如果我有Minimum x and y and Maximum x and y like MaxX 5 MinX 1 MaxY
  • 无缝滚动瓷砖地图

    我正在开发一个自上而下的角色扮演游戏 并且想要实现无缝滚动地图 也就是说 当玩家探索世界时 地图之间没有加载屏幕 也没有通往下一个区域的 门 我有两种方法可以打破世界 在顶层 我有 区域 它只是 9 个 地图 的集合 这些区域仅由目录表示
  • 使用 Matplotlib、PyQt 和 Threading 进行实时绘图导致 python 崩溃

    我一直在努力研究我的 Python 应用程序 但找不到任何答案 我有 PyQT GUI 应用程序 它使用 Matplotlib 小部件 GUI 启动一个新线程来处理 mpl 小部件的绘图 恐怕我现在通过从另一个线程访问 matplotlib
  • 如何使用 Python Pandas 制作 DataFrame 切片并在特定切片中“fillna”?

    问题 让我们从 Kaggle 获取泰坦尼克号数据集 我有包含 Pclass 性别 和 年龄 列的数据框 我需要用特定组的中位数填充 年龄 列中的 NaN 如果是来自一等的女性 我想用一等女性的中位数填写她的年龄 而不是整个年龄列的中位数 问
  • 如何使用JQuery和Django(ajax + HttpResponse)?

    假设我有一个 AJAX 函数 function callpage ajax method get url abc data x 3 beforeSend function success function html IF HTTPRESPO
  • python 中的异步编程

    python 中有异步编程的通用概念吗 我可以为一个函数分配一个回调 执行它并立即返回主程序流 无论该函数的执行需要多长时间吗 您所描述的 主程序流程在另一个函数执行时立即恢复 不是通常所说的 异步 又名 事件驱动 编程 而是 多任务 又名
  • Mongodb - 为现有集合添加架构

    我的 MongoDB 中有一个包含 1300 万条记录的集合 不幸的是 当我创建这个集合时 没有为其创建模式 我想知道除了备份整个数据库 创建架构并上传所有数据之外 是否有任何方法可以添加 JSON 架构 您可以使用以下方法将 JSON 架
  • Flask APScheduler + Gunicorn 工作人员 - 在套接字修复后仍在运行任务两次

    我有一个 Flask 应用程序 我使用 Flask APScheduler 在我的数据库上运行计划查询并通过 cron 作业发送电子邮件 我通过 Gunicorn 使用以下配置运行我的应用程序并通过主管进行控制 program myapp
  • Tensorboard——High-level节点的计算时间与其子节点计算时间的总和不同

    继tutorial https www tensorflow org programmers guide graph viz在 TensorFlow 上 我试图使用张量板来理解运行时统计数据 我发现代表名称范围的高级节点的计算时间不等于其子
  • 使用 Tweepy 获取推文时出错

    我有一个用于获取推文的 Python 脚本 在脚本中我使用该库 Tweepy 我使用有效的身份验证参数 运行此脚本后 一些推文存储在我的 MongoDB 中 有些则被 if 语句拒绝 但我仍然收到错误 requests packages u
  • 有效积累稀疏 scipy 矩阵的集合

    我有一个 O N NxN 的集合scipy sparse csr matrix 每个稀疏矩阵都有 N 个元素集 我想将所有这些矩阵加在一起以获得一个常规的 NxN numpy 数组 N 约为 1000 矩阵内非零元素的排列使得所得总和肯定不

随机推荐