Sobes.tech
Middle

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"}]}]}