我正在 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 的内置字典和列表,您的代码在大多数情况下都是简单高效的。您可以使用以下功能增强可读性:
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}")