Python - извлечение ключа и значения из списка словарей - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть дерево 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'}]

С Основываясь на c понимании 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}

Я знаю, что я полностью пропустил шаг, и я не нашел пути чтобы приблизиться после попытки использовать разные версии этого скрипта, это самое близкое, что я получил. Любые указатели очень ценятся

1 Ответ

0 голосов
/ 21 апреля 2020

Предполагая действительное 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'}]

A далее pythoni c подход будет заключаться в использовании понимания списка в сочетании с 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...