#python-3.x #list #dictionary
#python-3.x #Список #словарь
Вопрос:
У меня есть список словарей, в которых есть ключ, значения и другая информация, например:
mylist = [ {'key': 'captial' , 'value': 'captial of india'},
{'key': 'captial' , 'value': 'captial of usa'},
{'key': 'fruit' , 'value': 'colour of apple'},
{'key': 'fruit' , 'value': 'colour of orange'}]
Как мне выровнять список, чтобы получить следующий результат
result=[{'title':'captial',questions:[{text:'captial of usa'},{text:'captial of india'}]},
{'title':'fruit',questions:[{text:'colour of apple'},{text:'colour of orange'}]}]
Ответ №1:
Вы можете использовать defaultdict
и понимание списка для достижения ваших результатов. defaultdict
сгруппирует значения одних и тех же ключей, присутствующих в mylist
, а затем вы будете использовать эти сгруппированные значения с вашими пользовательскими ключами (как требуется в вашем result
), используя понимание списка.
from collections import defaultdict
mylist = [...]
a_list = defaultdict(list)
for item in mylist:
a_list[item["key"]].append(item["value"])
result = [
{"title": key, "questions": [{"text": v} for v in value]}
for key, value in a_list.items()
]
Вывод:
[
{
"title": "captial",
"questions": [{"text": "captial of india"}, {"text": "captial of usa"}],
},
{
"title": "fruit",
"questions": [{"text": "colour of apple"}, {"text": "colour of orange"}],
},
]