Сумма и группировка значений из 3-х списков словарей - PullRequest
0 голосов
/ 15 января 2020

У меня есть список продавцов. Это список из словаря, который содержит имена продавцов и транспортных средств, а также общие значения.

salesperson_list = [
                    {'salesperson': 'MEER SHAFFIC', 'vehicle': 2084.25, 'general': None}, 
                    {'salesperson': 'SHILPY RAJ', 'vehicle': None, 'general': 7796.25}, 
                    {'salesperson': 'RENJITH P G', 'vehicle': 708.75, 'general': None},
                    {'salesperson': 'KRISHNALAL', 'vehicle': 2388.75, 'general': None},  
                   ]

У меня есть 2 менеджера списка

Первый - менеджер по продажам с сотрудниками среднего уровня, а другой - менеджер по продажам с сотрудниками более низкого уровня.

manager_list_1= [
                 {'MEER SHAFFIC': ['SANJAY', 'SHILPY RAJ']},
                 {'SRIDEVI MADHAVARAJ': ['JITIN', 'FAZIL']}
                ]

здесь ключ - менеджер по продажам, а каждое значение - сотрудники среднего уровня.

manager_list_2 = [
                  {'MEER SHAFFIC': ['KRISHNALAL','VINCA', None]},
                  {'SRIDEVI MADHAVARAJ': ['KIRAN', None, None]}
                 ]

это менеджер по продажам с сотрудниками более низкого уровня.

Я на самом деле пытается получить окончательный вариант, как это

final_list = [{'salesperson': 'MEER SHAFFIC', 'vehicle': 4473.00, 'general': 7796.25}]

Финальный список содержит только менеджера по продажам в качестве имен продавцов, а также сумму среднего и нижнего уровня и общее значение сотрудника .

Например, 'MEER SHAFFI C' из salesperon_list в качестве продавца и значения сумма значений MEER SHAFFI C 'S, SHILPY RAJ и KRISHNALAL

Я пытался что-то, но не получил должного результата. Пожалуйста, предложите несколько идей или предложений для этого . Любые идеи приветствуются

1 Ответ

1 голос
/ 15 января 2020

Вот одно из решений:

ultimate_manager_dict = {}
for i in manager_list_1:
    tmp_lst = list(i.values())[0]
    for j in manager_list_2:
        if i.keys()==j.keys():
            tmp_lst += list(j.values())[0]
    tmp_lst = [i for i in tmp_lst if i]
    ultimate_manager_dict.update({list(i.keys())[0] : tmp_lst})
result = []
for manager, sub_ords in ultimate_manager_dict.items():
    veh_lst = []
    gen_lst = []
    for j in salesperson_list:
        if j['salesperson']==manager or j['salesperson'] in sub_ords:
            veh_lst.append(j['vehicle'])
            gen_lst.append(j['general'])
    veh_lst = [i for i in veh_lst if i]
    gen_lst = [i for i in gen_lst if i]
    result.append({'salesperson' : manager, "vehicle" : sum(veh_lst), 'general' : sum(gen_lst)})
print(result)

Вывод :

[{'salesperson': 'MEER SHAFFIC', 'vehicle': 4473.0, 'general': 7796.25}, 
 {'salesperson': 'SRIDEVI MADHAVARAJ', 'vehicle': 0, 'general': 0}]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...