如何在python中从复杂的Json中提取数据
我试图在python中从JSON中提取特定数据,但如果不指定名称aby、adz、agn,就无法完成,因为数据数组非常大,我只发布了其中的一部分 例如,我想得到“order”为160的元素的“nethash”。这里最好的策略是什么 这是我的JSON:如何在python中从复杂的Json中提取数据,python,json,Python,Json,我试图在python中从JSON中提取特定数据,但如果不指定名称aby、adz、agn,就无法完成,因为数据数组非常大,我只发布了其中的一部分 例如,我想得到“order”为160的元素的“nethash”。这里最好的策略是什么 这是我的JSON: { "data": { "aby": { "info": { "algo": "scrypt", "bestPool": 11, "bestexchang
{
"data": {
"aby": {
"info": {
"algo": "scrypt",
"bestPool": 11,
"bestexchange": 4,
"blocks": 1036520,
"blocktime": 0,
"coin": "aby",
"coinsPerDay": "0.82148358090787920727",
"diff": 4383.33555,
"diffAlgo": "0.00753414531332241653",
"hashAlgo": "0",
"nethash": 66289.728291,
"pos": "?",
"priceBTC": "0.00000098",
"priceUSD": "0.00917138879999999934",
"reward": 200,
"timestamp": "2018-05-10 08:51:02.782957",
"type": "diff",
"usdPerDay": "0.00753414531332241653",
"value": "0.00753414531332241653",
"workers": 757
},
"order": 109
},
"adz": {
"info": {
"algo": "x11",
"bestPool": 10,
"bestexchange": "None",
"blocks": 422294,
"blocktime": 0,
"coin": "adz",
"coinsPerDay": "0.15507838730965944896",
"diff": 103774.174,
"diffAlgo": "0.00310020305638486395",
"hashAlgo": "0",
"nethash": 612234.455356,
"pos": "?",
"priceBTC": "0.00000214",
"priceUSD": "0.01999120000000000064",
"reward": 40,
"timestamp": "2018-05-10 08:51:02.782957",
"type": "diff",
"usdPerDay": "0.00310020305638486395",
"value": "0.00310020305638486395",
"workers": 265
},
"order": 160
},
"agn": {
"info": {
"algo": "neoscrypt",
"bestPool": 10,
"bestexchange": 5,
"blocks": 58301,
"blocktime": 0,
"coin": "agn",
"coinsPerDay": "51.22860596982359027152",
"diff": 4.47654431,
"diffAlgo": "1.47183776684280331892",
"hashAlgo": "0",
"nethash": 86.217988,
"pos": "?",
"priceBTC": "0.00000307",
"priceUSD": "0.02873077919999999716",
"reward": 6,
"timestamp": "2018-05-10 08:51:02.782957",
"type": "diff",
"usdPerDay": "1.47183776684280331892",
"value": "1.47183776684280331892",
"workers": 417
},
"order": 61
}
},
"message": "",
"status": "ok",
"timestamp": "Thu, 10 May 2018 08:51:07 GMT"
}最好的策略是由您定义: 您可以使用像这样的库,它使您能够以简单的方式在JSON中搜索。 只需导入库并构建对象树,然后键入要搜索的单词 您还可以构建自己的
类
或函数
,以在json中进行搜索,例如:
obj = CustomJsonSearch(..{your data})
query = obj.return_value(search_id=168, retunr_params=['nethash'])
或者使用类似
并进行查询。您可以迭代JSON的键,直到找到要搜索的内容:
data=json_data['data']
对于data.keys()中的i:
如果数据[i]['order']==160:
nethash=data[i]['info']['nethash']
编辑:下面是一些可能用于搜索多个值的代码,我已经测试过了,它可以工作,但不确定对于大型数据集它的效率有多高:
data=json_data['data']
搜索列表=[160,61]
nethash_dict={}
对于data.keys()中的i:
如果搜索列表中的数据[i]['order']:
nethash_dict[data[i]['order']]=data[i]['info']['nethash']
可能重复的:您已经尝试过什么?您是否已开始将json值设置为变量,然后处理该变量?这应该只需要2-3行。还有一件事,我需要每次运行这个FOR循环来获取每个订单吗?假设我想要'order'==61和'order'==160I,我用一些可能的代码更新了我的答案,用于搜索并将多个值提取到字典中。