为了账号安全,请及时绑定邮箱和手机立即绑定

查询时如何正确设置json的嵌套dict路径

查询时如何正确设置json的嵌套dict路径

qq_花开花谢_0 2021-10-26 10:22:50
我收到错误:Exception has occurred: KeyError'Key not exists'  File "C:\ShopFloor\main.py", line 59, in main    res = qe.at('vehicledata.result.NUM').where('Status', '=', 1).where('Process', '=', 'SPA').get()  File "C:\ShopFloor\main.py", line 96, in <module>    main()...在以下行中:qe = JsonQ(r"C:\ShopFloor\data.json")res = qe.at('vehicledata.result.NUM').where('Status', '=', 1).where('Process', '=', 'SPA').get()      pprint(res)JsonQ.reset(qe)Vehicledata 是一个字符串,但是 result.NUM 是动态的,因此 result.NUM 有大约 2000 个不同的字典。我的查询旨在获取状态为 1 且进程为 SPA 的所有数字:我如何才能使其正常工作?我认为这是由于动态 dict 任何帮助表示赞赏这是来自 data.json 的一个小样本数据{    "vehicledata": [        {            "12345678901234567": {                "Process": "SPA",                "Status": 0            }        },        {            "12345678901234567": {                "Process": "Road",                "Status": 0            }        },
查看完整描述

2 回答

?
达令说

TA贡献1821条经验 获得超6个赞

或者您可以使用 json 包加载它并以这种方式过滤它。


import json


with open('data.json', 'r') as f:

    data = json.load(f)


curr_position = data['vehicledata']

result = [key for list_item in curr_position for key in list_item.keys() if list_item[key]['Status'] == 1 and list_item[key]['Process'] == 'SPA']

print(result)

根据jsonq docs,JsonQ 在底层做了基本相同的事情。


查看完整回答
反对 回复 2021-10-26
  • 2 回答
  • 0 关注
  • 123 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号