Преобразовать список словарей с вложенным списком словарей

Рейтинг: 0Ответов: 1Опубликовано: 03.04.2023

Задача на python есть входные данные:

list = [{'fruit': 'apple', 'types': [{'type':'green', 'amount':'2'},{'type':'red', 'amount':'3'}]},{'fruit': 'melon', 'types': [{'type':'yellow', 'amount':'4'},{'type':'red', 'amount':'5'},{'type':'orange', 'amount':'1'}]}]

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

Как сделать функцию преобразования исходного списка в словарь следующего вида?

dict = {'apple': {'green':'2','red':'3'},'melon': {'yellow':'4','red':'5','orange':'1'}}

получалось сделать только такое, но запутался с вложенным словарем:

dict1 = {} 
dict1 = {list[i]['fruit']: list[i]['types'] for i in range(len(list))}
print(dict1)

Ответы

▲ 4Принят

Нужно сделать вложенное словарное включение (dict comprehension)

dict1 = {item['fruit']: {v['type']: v['amount'] for v in item['types']} for item in lst}

Имя переменной списка заменил на lst, чтобы не перекрывать list