将JSON值添加到列表中

3
我想要遍历我的JSON文件,并将两个值添加到列表中。理论上,我希望有一个嵌套的列表,如下所示:ips = [["custom3","modemId"],["custom3","modemId"]]等等。我的JSON文件有171个custom3和modemId值。因此,理论上我的嵌套列表将包含171个列表。我无法将值添加到列表中,我希望将每个列表附加在一起,以创建171个列表。
json1 = open('C:\\Users\\' + comp_name + '\\Documents\\Programming Projects\\Python\\Python Firmware Script\\curl\\src\\out.json')
json1_obj = json.load(json1)

for i in json1_obj['data']:
    ip = [i['custom3']['modemId']]

我的JSON数据片段如下:

{
    "data": [
        {
            "custom3": "192.168.243.132",
            "modemId": "000408"
        },
        {
            "custom3": "192.168.244.156",
            "modemId": "000310"
        }
    ]
}

我有171个以上的对象,但我只显示了两个。从上面的内容中,我想创建两个列表,并将它们各自添加到一个嵌套列表中。

如何在Python中迭代每个JSON对象并创建一个包含我的JSON数据的嵌套列表?


数组内嵌数组还是字典数组? - Zeokav
加载 JSON 后,它只是普通的 Python 列表和字典。 - OneCricketeer
@cricket_007 我不知道如何遍历我的JSON对象并将两个值添加到列表中。使用上面的代码,我得到了以下错误string indices must be integers - juiceb0xk
是的,i['custom3'] 是一个字符串... 而且你没有使用整数进行索引。 - OneCricketeer
顺便说一下,你的 JSON 片段不是有效的。 - OneCricketeer
显示剩余2条评论
3个回答

2

如评论中所述,一旦加载了 json,它就是一个 Python 字典。

现在应迭代 'data' 键的值,提取信息并将其存储在列表中。

类似这样的代码应该可以完成任务:

json_obj = json.load(json1)

ips = []
for piece in json_obj['data']:
    this_ip = [piece['custom3'], piece['modemId']]
    ips.append(this_ip)

一行表单:

ips = [[piece['custom3'], piece['modemId']] for piece in json_obj['data']]

这个可行!非常感谢。确实非常有趣,我之前一直卡在将两个值添加到列表中。 - juiceb0xk
你可以用一行代码做相同的事情 ;) - OneCricketeer

2

如果你只想要这个

ips = [["custom3","modemId"],["custom3","modemId"]] 

那么,你所需要的就是一个简单的列表推导式。
ips = [d.keys() for d in json1_obj['data']] 

如果你想得到实际的值(按顺序),而不是键

ips = [ [ d['custom3'], d['modemId'] ]  for d in json1_obj['data']] 

这确实很方便,不幸的是,我的JSON对象包含的数据比我指定的要多得多,非常抱歉!打印我的列表会打印出每个值。我只需要从我的JSON对象中获取两个值。 - juiceb0xk

0
如果您想获取custom3和modemIds的值,可以这样做:
[item.values() for item in json_data['data']]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接