我有一个类似于以下内容的JSON树。
objArr = [{ 'plants' : [{'inventory_id':1, 'title':'Sunflower'},{'inventory_id': 2, 'title':'Palm' }],{ 'plants' : [{'inventory_id':1, 'title':'Succulent'},{'inventory_id': 2, 'title':'Lillies' }]}
我正在使用python遍历对象数组并返回其下面的每个对象数组。到目前为止,我已经完成了将所有与之对应的值分组在单个字符串中的“植物”的打印。但是,我还没有完成最后一步,即遍历各个“植物”对象并独立提取其键和值
以下是我的预期输出
singleObjArr = [{'title': 'Sunflower'}, {'title': 'Palm'}, {'title': 'Succulent'}, {'title': 'Lillies'}]
基于对Python的基本了解,我整理了以下脚本来提取值。
objArr = [{ 'plants' : [{'inventory_id':1, 'title':'Sunflower'},{'inventory_id': 2, 'title':'Palm' }],{ 'plants' : [{'inventory_id':1, 'title':'Succulent'},{'inventory_id': 2, 'title':'Lillies' }]}
for item in objArr:
my_dict={}
my_dict['plants']=item.get('title')
print(my_dict)
# output: {'plants': None}{'plants': None}
我知道我完全错过了一步,在尝试使用该脚本的不同版本后,我还没有找到进一步接近的方法,这是我最近的方法。任何指针,不胜感激
假设一个有效的JSON,如下所示转换为objArr
,您可以执行:
objArr = [{'plants': [{'inventory_id': 1, 'title': 'Sunflower'}, {'inventory_id': 2, 'title': 'Palm'}]},
{'plants': [{'inventory_id': 1, 'title': 'Succulent'}, {'inventory_id': 2, 'title': 'Lillies'}]}]
result = []
for item in objArr:
for inventory in item['plants']: # get the plants
result.append({"title": inventory["title"]}) # for each plant grab the title
print(result)
输出
[{'title': 'Sunflower'}, {'title': 'Palm'}, {'title': 'Succulent'}, {'title': 'Lillies'}]
更pythonic的方法是将list comprehension与itemgetter结合使用,如下:
# plant extractor
plants = itemgetter('plants')
# title extractor
title = itemgetter('title')
result = [{"title": title(inventory)} for item in objArr for inventory in plants(item)]
print(result)