Как получить значение из списка словаря, создать для этого функцию - PullRequest
0 голосов
/ 05 августа 2020

У меня есть словарь, в котором есть список словарей

  • Список словаря содержит другой список словарей

  • Мне нужно извлечь values ​​и добавить в список

Мне нужно написать функцию. если дочерний элемент имеет name, добавляемый к родительскому списку, чтобы любой список функции прохождения словаря создавал вывод, как показано ниже

a = [{"id": "1", "Area": [{"id": "2", "name": "Clinical"},
                          {"id": "23", "name": "Delivery"}]},
     {"id": "2", "Area": [{"id": "2", "name": "Clinical"},
                          {"id": "23", "name": "Delivery"}]}]

Ожидаемый результат:

[{"id": "1", "Area": ["Clinical", "Delivery"]},
 {"id": "2", "Area": ["Clinical", "Delivery"]}]

Код ниже

result = []
temp = {}
for i in range(0,len(a)):
    templist = []
    b = a[i]['Area'][i]['name']
    c = a[i]['id']
    temp['id'] = c
    templist.append(b)
    temp['Area'] = templist
    result.append(temp)
    print (result)

Мой вывод не распаковывается и не помещается в список?

Ответы [ 3 ]

5 голосов
/ 05 августа 2020

Вот возможное решение:

result = [{'id': d['id'], 'Area': [nd['name'] for nd in d['Area']]} for d in a]
3 голосов
/ 05 августа 2020

Вот решение с пониманием словаря и списка

a=[{ "id":"1", "Area":[ { "id":"2", "name":"Clinical" }, 
                        { "id":"23", "name":"Delivery" }], },
   { "id":"2", "Area":[ { "id":"2", "name":"Clinical" }, 
                        { "id":"23", "name":"Delivery" }] } ]

res = dict(d, Area=[d2['name'] for d2 in d['Area']]) for d in a]
print(res)

Вывод

[{'id': '1', 'Area': ['Clinical', 'Delivery']}, 
 {'id': '2', 'Area': ['Clinical', 'Delivery']}]
0 голосов
/ 05 августа 2020

Вы выставили температуру за пределами l oop, поэтому температура не сбрасывается во время l oop. Когда вы меняете значение id, значение id будет полностью изменено.

result = []
for i in range(0,len(a)):
    temp = {}
    templist = []
    b = a[i]['Area'][i]['name']
    c = a[i]['id']
    temp['id'] = c
    templist.append(b)
    temp['Area'] = templist
    result.append(temp)
print (result)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...