【问题标题】:Adding JSON values into a list将 JSON 值添加到列表中
【发布时间】:2017-11-10 03:52:58
【问题描述】:

我想遍历我的 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 数据的 sn-p:

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

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

如何在 Python 中遍历每个 JSON 对象并使用我的 JSON 数据创建一个嵌套列表?

【问题讨论】:

  • 数组是数组还是字典数组?
  • 加载json后就是普通的python列表和字典
  • @cricket_007 我不知道如何遍历我的 JSON 对象并将两个值添加到列表中。使用上面的代码,我收到以下错误string indices must be integers
  • 是的,i['custom3'] 是一个字符串...而且您没有使用整数进行索引
  • 顺便说一句,你的 json sn-p 无效。

标签: python json python-2.7 list nested


【解决方案1】:

如果你只是想要这个

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 对象中的两个值。
【解决方案2】:

如 cmets 中所述,一旦加载,json 就是一个 python 字典。 您现在应该迭代“数据”键的值,提取信息并将它们存储在列表中。

这样的事情应该可以完成:

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']]

【讨论】:

  • 这成功了!非常感谢。确实很有趣,我只是坚持将这两个值添加到列表中。
  • 你可以在一行中做同样的事情;)
【解决方案3】:

如果你想要 custom3 和 modemIds 的值,你可以这样做,

[item.values() for item in json_data['data']]

【讨论】:

    猜你喜欢
    • 2022-01-20
    • 2021-11-21
    • 1970-01-01
    • 2017-11-30
    • 2021-08-03
    • 1970-01-01
    • 2021-09-25
    • 1970-01-01
    • 2021-02-13
    相关资源
    最近更新 更多