Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-从字典列表中提取键和值_Python_Arrays_Json_Python 3.x_Object - Fatal编程技术网

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

Python-从字典列表中提取键和值,python,arrays,json,python-3.x,object,Python,Arrays,Json,Python 3.x,Object,我有一个类似于下面的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迭代对象数组,并返回它下面的每个对象数组。到目前为止,我已经完成

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

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

假设一个有效的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'}]
一种更具python风格的方法是结合使用,如下所示:

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

请完成最后几行工作,将此填写到a。将JSON输入放入字符串并加载该字符串。修正你的缩进。然后,有人将能够在几分钟内提供帮助。
[{'title':d['title']}在objar中代表o,在o['plants']]中代表d
感谢您的回复!我得到了以下错误,这与我以前的尝试一致
TypeError:string索引必须是整数
当我使用
[“title”]
时,那么你正在做的对象[“title”]就是一个字符串