Sobes.tech
Назад к вопросам
Middle
2

2. Найти пользователей, которые совершили покупок на сумму больше 5000р. Вывести их имена в формате id пользователя | имя | фамилия | сумма покупок

Компании, где спрашивали
OZONOZON

Ответ от нейросети

sobes.tech AI

python

Предположим, у нас есть список словарей с данными о покупках пользователей

purchases = [ {'user_id': 1, 'first_name': 'Иван', 'last_name': 'Иванов', 'amount': 3000}, {'user_id': 2, 'first_name': 'Пётр', 'last_name': 'Петров', 'amount': 7000}, {'user_id': 1, 'first_name': 'Иван', 'last_name': 'Иванов', 'amount': 2500}, {'user_id': 3, 'first_name': 'Сергей', 'last_name': 'Сергеев', 'amount': 4000}, {'user_id': 2, 'first_name': 'Пётр', 'last_name': 'Петров', 'amount': 1000}, ]

Суммируем покупки по пользователям

from collections import defaultdict

user_sums = defaultdict(lambda: {'first_name': '', 'last_name': '', 'total': 0})

for p in purchases: user_id = p['user_id'] user_sums[user_id]['first_name'] = p['first_name'] user_sums[user_id]['last_name'] = p['last_name'] user_sums[user_id]['total'] += p['amount']

Выводим пользователей с суммой покупок больше 5000

for user_id, data in user_sums.items(): if data['total'] > 5000: print(f"{user_id} | {data['first_name']} | {data['last_name']} | {data['total']}")


Результат:

2 | Пётр | Петров | 8000 1 | Иван | Иванов | 5500