Python从字典列表中提取键和值

2024-05-23 13:50:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个类似于下面的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迭代对象数组,并返回它下面的每个对象数组。到目前为止,我已经完成了“plants”的打印,它的所有对应值都分组在一个字符串中。但是,我还没有完成最后一步,那就是迭代各个“plants”对象并独立提取它们的键和值

以下是我的预期输出

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}

我知道我完全错过了一个步骤,在尝试了不同版本的脚本之后,我还没有找到一种方法来接近它,这是我最近的一次尝试。非常感谢您的指点


Tags: 对象脚本idtitlemy数组itemdict
1条回答
网友
1楼 · 发布于 2024-05-23 13:50:06

假设一个有效的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 comprehensionitemgetter结合使用,如下所示:

# 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)

相关问题 更多 >