Python. Создать словарь нужно вида

есть переменные ticket, Eng_name, STATUS, summa которые парсятся и присваиваются в цикле. на выходе имеем такой вид:

ticket:  59406 Eng_name: Иванов STATUS:  Рассчитан summa :  600
ticket:  59269 Eng_name: Петров STATUS:  Рассчитан summa :  5600
ticket:  54730 Eng_name: Петров STATUS:  Рассчитан summa :  27750
ticket:  59241 Eng_name: Карпов STATUS:  Рассчитан summa :  1050

требуется создать словарь с ключами по всем фамилиям. (если фамилия встречается 2 и более раз, то добавить в словарь все значения переменных ticket, Eng_name, STATUS, summa и вычислить сумму значений summa )


Ответы (1 шт):

Автор решения: Zhihar

Что-то на подобии:

data = [
    "ticket:  59406 Eng_name: Иванов STATUS:  Рассчитан summa :  600",
    "ticket:  59269 Eng_name: Петров STATUS:  Рассчитан summa :  5600",
    "ticket:  54730 Eng_name: Петров STATUS:  Рассчитан summa :  27750",
    "ticket:  59241 Eng_name: Карпов STATUS:  Рассчитан summa :  1050",
]

res = dict()

for line in data:
    parts = line.split()

    ticket_id, name, status, summ = parts[1], parts[3], parts[5], int(parts[8])

    if name in res:
        res[name]["data"].append((ticket_id, status, summ))
        res[name]["sum"] += summ
    else:
        res[name] = {
            "data": [(ticket_id, status, summ)],
            "sum": summ
        }

print(res)
→ Ссылка