解析Json文件并保存特定值

时间:2018-02-02 11:17:20

标签: python json

我有这个JSON文件,其中id的数量有时会发生变化(将添加更多id):

{
    "maps": [
        {
            "id": "blabla1",
            "iscategorical": "0"
        },
        {
            "id": "blabla2",
            "iscategorical": "0"
        },
        {
            "id": "blabla3",
            "iscategorical": "0"
        },
        {
            "id": "blabla4",
            "iscategorical": "0"
        }
    ]
}

我有这个python代码,必须打印ids的所有值:

import json

data = json.load(open('data.json'))
variable1 = data["maps"][0]["id"]
print(variable1)
variable2 = data["maps"][1]["id"]
print(variable2)
variable3 = data["maps"][2]["id"]
print(variable3)
variable4 = data["maps"][3]["id"]
print(variable4)

我必须使用变量,因为我想在下拉菜单中显示值。是否可以以更有效的方式保存id的值?你怎么知道这个json文件的最大id(在例4中)?

2 个答案:

答案 0 :(得分:2)

您可以通过查看id的{​​{1}}来获取length的数量(这是元素的数量):

data['maps']

获取所有number_of_ids = len(data['maps']) 值的干净方法是将它们存储在id中。

你可以用这样的pythonic方式实现这个目的:

list

使用这种方法,您甚至不需要在原始list_of_ids = [map['id'] for map in data['maps']] 中存储元素数量,因为您基本上使用json方法迭代所有元素。

如果pythonic方法让你感到烦恼,你可以用经典的foreach方法实现同样的目的:

foreach

或者您可以使用经典 list_of_ids = [] for map in data['maps']: list_of_ids.append(map['id']) ,这是您真正需要的长度:

for loop

这是最后的经典方式,但我建议您采用其他方法,以便利用python为您提供的优势!

您可以找到有关此内容的更多信息here

快乐的编码!

答案 1 :(得分:1)

data['maps']是一个简单的列表,因此你可以这样迭代它:

for map in data['maps']:
    print(map['id'])

要将它们存储在变量中,您需要将它们输出到列表中。将它们存储在一个单独的变量中并不是一个好主意,因为就像你说的那样,你无法知道有多少变量。

ids = []
for map in data['maps']:
    ids.append(map['id'])