У меня есть отсортированный и вложенный список.Каждый элемент в списке имеет 3 подэлемента;Drugname, Doctor_id, Сумма.Для данного drugname (которое повторяется) идентификаторы доктора разные, как и суммы.См. Примерный список ниже.
Мне нужен вывод, в котором для каждого имени друга мне нужно подсчитать общие УНИКАЛЬНЫЕ идентификаторы доктора и сумму в долларах для этого лекарства.Например, для приведенного ниже фрагмента списка.
[
['CIPROFLOXACIN HCL', 1801093968, 61.49],
['CIPROFLOXACIN HCL', 1588763981, 445.23],
['HYDROCODONE-ACETAMINOPHEN', 1801093968, 251.52],
['HYDROCODONE-ACETAMINOPHEN', 1588763981, 263.16],
['HYDROXYZINE HCL', 1952310666, 945.5],
['IBUPROFEN', 1801093968, 67.06],
['INVEGA SUSTENNA', 1952310666, 75345.68]
]
Требуемый вывод такой, как показано ниже.
[
['CIPROFLOXACIN HCL', 2, 516.72],
['HYDROCODONE-ACETAMINOPHEN', 2, 514.68]
['HYDROXYZINE HCL', 1, 945.5]
['IBUPROFEN', 1, 67.06]
['INVEGA SUSTENNA', 1, 75345.68]
]
В мире баз данных это проще всего с простой GROUP BY ondrugname.В Python мне не разрешено использовать PANDAS, NumPy и т. Д. Только основные строительные блоки Python.Я попробовал приведенный ниже код, но не могу сбросить переменную count для подсчета идентификаторов врачей и сумм.Этот закомментированный код является одной из нескольких попыток.Не уверен, что мне нужно использовать вложенный цикл for или цикл for-while.
Вся помощь приветствуется!
aggr_list = []
temp_drug_name = ''
doc_count = 0
amount = 0
for list_element in sorted_new_list:
temp_drug_name = list_element[0]
if temp_drug_name == list_element[0]:
amount += float(amount)
doc_count += 1
aggr_list.append([temp_drug_name, doc_count, amount])
print(aggr_list)