使用python连接多维列表的问题

时间:2017-06-30 07:07:15

标签: python arrays json multidimensional-array

我在使用函数解析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] 我尝试了很多东西而没有任何作用,我觉得解决方案很简单,我只是无法理解它。有人看到了可能有用的东西吗? 谢谢!

1 个答案:

答案 0 :(得分:0)

如果我正确理解了这个问题,那么您的代码中的问题就是您要总结一些事情,特别是那些无法理解的事情,例如添加&#39; series_1&#39 ;到了&#39;。我认为你需要做的就是这样:

d = data
for i in dataPath:
    d = d[i]
return d