question 116 Collection Algorithms · medium
Every order paid every way
methods_by_order should list the distinct payment methods used for each order. Instead, every order in the report shows every method anyone used. Find the bug and fix it so each order has its own list.
Function
methods_by_order(payments)paymentsa list of payment attempts: dictionaries with
payment_id, order_id and methodReturns
{order_id: [methods]}, each method listed once per order, in the order it was first used for that orderKeepthe function name and what it returns; only the bug should change
Examples
callmethods_by_order([{'payment_id': 'PAY0000416', 'order_id': 'O100376', 'method': 'gift_card'}, {'payment_id': 'PAY0000417', 'order_id': 'O100376', 'method': 'gift_card'}, {'payment_id': 'PAY0001503', 'order_id': 'O101341', 'method': 'card'}, {'payment_id': 'PAY0001504', 'order_id': 'O101341', 'method': 'paypal'}])returns{'O100376': ['gift_card'], 'O101341': ['card', 'paypal']}
callmethods_by_order([{'payment_id': 'P1', 'order_id': 'O103199', 'method': 'paypal'}, {'payment_id': 'P2', 'order_id': 'O103302', 'method': 'apple_pay'}])returns{'O103199': ['paypal'], 'O103302': ['apple_pay']}
callmethods_by_order([{'payment_id': 'P1', 'order_id': 'O1', 'method': 'card'}, {'payment_id': 'P2', 'order_id': 'O1', 'method': 'paypal'}, {'payment_id': 'P3', 'order_id': 'O1', 'method': 'card'}])returns{'O1': ['card', 'paypal']}