2. Find users who have made purchases totaling more than 5000 rubles. Display their names in the format user id | first name | last name | total purchase amount
sobes.tech AI
Answer from AI
python
Suppose we have a list of dictionaries with user purchase data
purchases = [ {'user_id': 1, 'first_name': 'Ivan', 'last_name': 'Ivanov', 'amount': 3000}, {'user_id': 2, 'first_name': 'Pyotr', 'last_name': 'Petrov', 'amount': 7000}, {'user_id': 1, 'first_name': 'Ivan', 'last_name': 'Ivanov', 'amount': 2500}, {'user_id': 3, 'first_name': 'Sergey', 'last_name': 'Sergeev', 'amount': 4000}, {'user_id': 2, 'first_name': 'Pyotr', 'last_name': 'Petrov', 'amount': 1000}, ]
Summing purchases by users
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']
Display users with total purchases over 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']}")
Result:
2 | Pyotr | Petrov | 8000 1 | Ivan | Ivanov | 5500"}]}]}