如何在 Python 中有效地迭代大型 JSON 对象以提取特定值?

问题描述 投票:0回答:1

我正在 Python 中处理一个大型 JSON 对象,我需要根据某些键提取特定值。这是 JSON 结构的简化版本:

{
  "data": [
    {
      "id": 1,
      "attributes": {
        "name": "Item 1",
        "value": "Value 1"
      }
    },
    {
      "id": 2,
      "attributes": {
        "name": "Item 2",
        "value": "Value 2"
      }
    }
  ]
}

我想从“数据”列表中的每个对象中提取“名称”和“值”对。迭代此 JSON 对象并提取这些值的最有效方法是什么?

我考虑过使用 for 循环来迭代每个项目,但我想知道是否有更 Pythonic 或更有效的方法来做到这一点,特别是在处理大型数据集时。任何建议或最佳实践将不胜感激!

我最初尝试使用像这样的简单 for 循环:

for item in json_data['data']:
    name = item['attributes']['name']
    value = item['attributes']['value']
    print(f"Name: {name}, Value: {value}")

这适用于较小的数据集,但我担心较大 JSON 对象的性能和可扩展性。我希望找到一种更有效或 Python 的方法,特别是如果有库或技术可以优化这个过程。例如,使用 pandas 或其他库是否会更有效,或者是否有更好的方法来构建大数据的循环?

python json performance optimization iteration
1个回答
0
投票

通过使用 Python 的内置字典和列表,您的代码在大多数情况下都是简单高效的。您可以使用以下功能增强可读性:

def extract_name_value(data):
    return [(item['attributes']['name'], item['attributes']['value']) for item in data['data']]
result = extract_name_value(json_data)
for name, value in result:
    print(f"Name: {name}, Value: {value}")

对于较大的数据集,我建议使用 pandas。 Pandas 库有助于处理结构化数据。 :

import pandas as pd
df = pd.json_normalize(json_data['data'])
result = df[['attributes.name', 'attributes.value']]
name_value_pairs = list(result.itertuples(index=False, name=None))
for name, value in name_value_pairs:
   print(f"Name: {name}, Value: {value}")
© www.soinside.com 2019 - 2024. All rights reserved.