Тая, ещё раз привет)
Написал для тебя скрипт, который вроде как решит твою задачу:
from statistics import mean
def calculate_purchases(data, calculation_type):
# Инициализация результата в виде словаря
result = {}
def process_data(names, amounts):
for name, amount in zip(names, amounts):
if name not in result:
result[name] = []
result[name].append(amount)
if isinstance(data, dict):
for name, amounts in data.items():
result[name] = amounts
elif all(isinstance(i, tuple) for i in data):
for name, amount in data:
if name not in result:
result[name] = []
result[name].append(amount)
elif all(isinstance(i, list) for i in data) and len(data) == 2:
process_data(*data)
if calculation_type == 1: # число покупок
for name in result:
result[name] = len(result[name])
elif calculation_type == 2: # средняя сумма покупок
for name in result:
result[name] = mean(result[name])
elif calculation_type == 3: # максимальная сумма покупок
for name in result:
result[name] = max(result[name])
elif calculation_type == 4: # минимальная сумма покупок
for name in result:
result[name] = min(result[name])
elif calculation_type == 5: # общая сумма всех покупок
for name in result:
result[name] = sum(result[name])
return result
names = ['Алиса', 'Максим', 'Алиса', 'Рома', 'Максим']
amounts = [150.0, 200.0, 350.0, 400.0, 50.0]
calculation_type = 1 # Тут меняем тип расчёта, для примера выберем тип расчета - число покупок
purchases_dict = {
'Алиса': [150.0, 350.0],
'Максим': [200.0, 50.0],
'Рома': [400.0]
}
print(calculate_purchases(purchases_dict, calculation_type))
Вывод будет таким:
{'Алиса': 2, 'Максим': 2, 'Рома': 1}
С учётом того, что в строке расчёта calculation_type = 1 я выбрал число покупок. Это изменяемый параметр от 1 до 5, по комментариям понятно. Другая цифра = другой результат. Поиграйся с этим параметром и поймёшь смысл кода)