我在使用函数解析json文件时遇到问题。我试图解决我的问题几个小时,我无法找到解决方法:/
这是我正在解析的json源代码(我知道我可以删除每个" series_x")上的[]:
{
"series_1":
[
{
"x": [1,2,4,6,8],
"y": [1,4,8,12,16]
}
],
"series_2":
[
{
"x": [1,2,4,6,8],
"y": [1,4,16,36,42]
}
]
}
我写了一个函数来在Python中返回x或y的特定值。这个功能很好。
import json
def importJson(filePath):
with open(filePath) as data_file:
data = json.load(data_file)
data = data['series_1'][0]['x']
return data
print(importJson('jasonfile.json'))
现在这很酷但功能总是会返回相同的值。所以这有点无意义。因此,我尝试编写一个函数,将filePath和数据列表的多维元素作为参数。注意:我希望这个参数包含一个未定义数量的列表维度,以防我想要返回所有" series_1"或者特定值" y"在里面。 所以我写了这个:
import json
def importJson(filePath, dataPath):
with open(filePath) as data_file:
data = json.load(data_file)
dataOut = data[dataPath[0]]
i=1
while i < len(dataPath):
dataOut += [dataPath[i]]
i += 1
return dataOut
print(importJson('dataSource.json', list(['series_1',0,'x'])))
你可以想象它不起作用,因为不可能像这样连接多维列表。所以a [0] [1]!= a [0] + [1] 我尝试了很多东西而没有任何作用,我觉得解决方案很简单,我只是无法理解它。有人看到了可能有用的东西吗? 谢谢!
答案 0 :(得分:0)
如果我正确理解了这个问题,那么您的代码中的问题就是您要总结一些事情,特别是那些无法理解的事情,例如添加&#39; series_1&#39 ;到了&#39;。我认为你需要做的就是这样:
d = data
for i in dataPath:
d = d[i]
return d