Требуется преобразовать список картежей в словарь заданного формат
Условие: есть список кортежей, который выгружается из mssql c использованием pyodbc. В этом списке есть отметки, о времени выхода артиста на определенную сцену (zone_id, zone_name)
# datetime, id_req, id_p, id_zon, name_zone, , surname, name, , middle name, id_comapany, name_company, job title
pyodbc_respons =[(datetime(2023, 3, 5, 20, 56, 9), 948358, 2523, 3, 'Сцена 3','Пугачёва', 'Алла', '-----', 50, 'министерство культуры ссср', 'Певица'),
(datetime(2023, 3, 5, 7, 45, 12), 941742, 608, 1, 'Сцена 1', 'Галкин', 'Максим', '-----', 7, 'министерство культуры РФ', 'Артист'),
(datetime(2023, 3, 5, 7, 30, 36), 941114, 2830, 1, 'Сцена 1','Орбакайте', 'Кристина', '----', 22, 'министерство культуры РФ', 'Артист'),
(datetime(2023, 3, 5, 19, 36, 56), 947573, 2643, 3, 'Сцена 3', 'Билан', 'Дмитрий', '----', 6, 'министерство культуры РФ', 'Артист'),
(datetime(2023, 3, 5, 14, 14, 15), 946119, 2601, 3, 'Сцена 3','Шнуров', 'Сергей', '------', 50, 'министерство культуры РФ', 'Шоумен')]
Требуется посчитать общее количество звезд на сцене согласно этого списки и вывести ответ в следующем формате:
dict_list = { "company": [
{
"name": "министерство культуры СССР",
"items": [
{
"position": "Певица",
"peopleInArea": [
{
"zoneId": 3,
"amount": 1 # сумма Певица
}
]
}
]
},
{
"name": "министерство культуры РФ",
"items": [
{
"position": "Артист",
"peopleInArea": [
{
"zoneId": 1, # на какой сцене выступает
"amount": 2 # сумма Галкин + Орбакайте
},
{
"zoneId": 3, # на какой сцене выступает
"amount": 1 # Билан
}
]
},
{
"position": "Шоумен",
"peopleInArea": [
{
"zoneId": 3, # на какой сцене выступает
"amount": 1 # Шнуров
}
]
}
]
}
]}
Я новичок. Делал через циклы и для каждого вложения использовал новый цикл. Понимаю что скорее всего тут как-то по другому сделать, но не могу понять как((( у меня таких записей 30к а циклов штук 10 выходит. То есть 30*10=300к обрабатываю строки.... Подскажите пожалуйста как быть?