【问题标题】:Json object extraction from multiple objects using python [closed]使用python从多个对象中提取Json对象[关闭]
【发布时间】:2018-01-22 15:11:33
【问题描述】:

我从具有以下结构的 REST API 获取 json 数据。数据为我提供了具有 dict 结构和 id 的数据列表。我想仅使用 id 访问特定数据,例如 data['x1234']。但我不能,因为每次我都必须遍历列表并检查 id 或结束像 data["body"][0]["id"] 这样的事情。我该如何解决这个问题?

{
body:
    [{
        id: x1234,
        name: a1,
        ....
    },
    {
        id: b1234,
        name: b1,
        ....
    }]
}

我只想提取 id 值为 b1234 的特定对象,因此 data["b1234"] 返回以下输出:

{
 id: b1234,
 name: b1,
 ....
}

【问题讨论】:

  • 你尝试过什么,它到底有什么问题?另外,为什么要以该文件开头,而不是例如序列化单个 JSON array?
  • 我从 REST API 获取 json 数据,具有上述结构,我使用 urllib 提取 json 数据,我无法找到使用 key=value 提取内容的语法
  • 这并不能真正回答我的任何一个问题。这是多次 REST 调用(在这种情况下,您需要重新考虑您如何存储它们)或单个调用(在这种情况下您需要抱怨)的结果吗?给维护他们返回损坏 JSON 的服务的人)?
  • 如果是关于使用 Python 从 JSON 中提取数据,您可能需要查看 this answer
  • 是的,它只是提取具有特定id的数据,如果我使用`data["body"][0]["id"]`它是索引0的列表值,是否有我可以提到包含 id 值的索引值作为 b1234

标签: python json python-3.x data-structures data-manipulation


【解决方案1】:

使用 id 作为 dict 键从列表中构建新的 dict 结构,如下所示:

items_list = json_data['body']
items_dict = {item['id']: item for item in items_list}

然后您可以使用 id 值访问特定数据,如下所示:

print(items_dict['b1234'])

【讨论】:

    猜你喜欢
    • 2020-12-23
    • 1970-01-01
    • 1970-01-01
    • 2020-06-02
    • 2017-08-12
    • 2018-09-22
    • 2017-07-21
    • 2019-10-29
    • 2021-03-06
    相关资源
    最近更新 更多