Python-从词典列表中提取键和值

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

我有一个类似于以下内容的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}

我知道我完全错过了一步,在尝试使用该脚本的不同版本后,我还没有找到进一步接近的方法,这是我最近的方法。任何指针,不胜感激

python arrays json python-3.x object
1个回答
0
投票

假设一个有效的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)
© www.soinside.com 2019 - 2024. All rights reserved.