def group_products_by_customer_and_invoice(products_string): products_list = transform_products_to_list(products_string) products = {} for product in products_list: customer_id = product[-2] invoice_id = product[0] products.setdefault(customer_id, {}) products[customer_id].setdefault(invoice_id, []) products[customer_id][invoice_id].append(product) return products # products = group_products_by_customer_and_invoice(products_string) # pprint(products) # print("#########################################") # print("#########################################") # print("#########################################") # customer = products['12583'] # # print(customer) # invoice = customer['536370'] # # print(invoice) # row_item = invoice[1] # # print(row_item) # description = row_item[2] # # print(description) # result = products['12583']['536370'][1][2] # print(result)
def group_products_by_customer(products_string): list_items = transform_products_to_list(products_string) step_2_dict = {} for item in list_items: step_2_dict.setdefault(item[-2], []) step_2_dict[item[-2]].append(item) return step_2_dict
def group_products_by_customer(products_string): products = transform_products_to_list(products_string) prod_by_customer = {} for product in products: customer_id = product[-2] prod_by_customer.setdefault(customer_id, []) prod_by_customer[customer_id].append(product) return prod_by_customer
def group_products_by_customer(products_string): products_list = transform_products_to_list(products_string) customers = {} for product in products_list: customer_id = product[-2] customers.setdefault(customer_id, []) customers[customer_id].append(product) return customers
def group_products_by_customer(products_string): products_list = transform_products_to_list(products_string) result = {} for item in products_list: cust_id = item[-2] result.setdefault(cust_id, []) result[cust_id].append(item) return result
def calculate_total_per_invoices(products_string): customer_list = transform_products_to_list(products_string) #pprint(customer_list) return_dict = {} for item in customer_list: return_dict.setdefault(item[-2], {}) return_dict[item[-2]].setdefault(item[0], 0) return_dict[item[-2]][item[0]] += round( int(item[3]) * float(item[-3]), 2) return return_dict
def test_step_1_products_string_to_list(): products_list = transform_products_to_list(products_string) assert type(products_list) == list assert len(products_list) == 50 product_1 = products_list[0] assert product_1 == [ '536365', '85123A', 'WHITE HANGING HEART T-LIGHT HOLDER', '6', '12/1/10 08:26', '2.55', '17850', 'United Kingdom' ]
def group_products_by_customer_and_invoice(products_string): products_list = transform_products_to_list(products_string) customers = {} for product in products_list: invoice_id = product[0] customer_id = product[-2] customers.setdefault(customer_id, {}) customers[customer_id].setdefault(invoice_id, []) customers[customer_id][invoice_id].append(product) return customers
def group_products_by_customer_and_invoice(products_string): products = transform_products_to_list(products_string) prod_grouped = {} for product in products: customer_id = product[-2] invoice_id = product[0] prod_grouped.setdefault(customer_id, {}) prod_grouped[customer_id].setdefault(invoice_id, []) prod_grouped[customer_id][invoice_id].append(product) return prod_grouped
def group_products_by_customer_and_invoice(products_string): products_list = transform_products_to_list(products_string) result = {} for item in products_list: cust_id = item[-2] invoice_num = item[0] result.setdefault(cust_id, {}) result[cust_id].setdefault(invoice_num, []) result[cust_id][invoice_num].append(item) return result
def calculate_total_per_invoices(products_string): products_list = transform_products_to_list(products_string) products = {} for product in products_list: customer_id = product[-2] invoice_id = product[0] products.setdefault(customer_id, {}) products[customer_id].setdefault(invoice_id, 0) products[customer_id][invoice_id] += round( (float(product[-3]) * float(product[-5])), 2) return products
def calculate_total_per_invoices(products_string): products = transform_products_to_list(products_string) invoice_totals = {} for product in products: customer_id = product[-2] invoice_id = product[0] quantity = int(product[3]) price = float(product[-3]) total = round(quantity * price, 3) invoice_totals.setdefault(customer_id, {}) invoice_totals[customer_id].setdefault(invoice_id, 0) invoice_totals[customer_id][invoice_id] += total return invoice_totals
def calculate_total_per_invoices(products_string): products_list = transform_products_to_list(products_string) product = {} for products in products_list: invoice = products[0] customer_id = products[-2] total = float(products[5]) * float(products[3]) product.setdefault(customer_id, {}) product[customer_id].setdefault(invoice, 0) product[customer_id][invoice] += round(total, 2) return product
def calculate_total_per_invoices(products_string): products_list = transform_products_to_list(products_string) results = {} for product in products_list: customer_id = product[-2] invoice_id = product[0] price = float(product[-3]) quantity = int(product[3]) total = round(price * quantity, 3) results.setdefault(customer_id, {}) results[customer_id].setdefault(invoice_id, 0) results[customer_id][invoice_id] += total return results
def calculate_total_per_invoices(products_string): products_list = transform_products_to_list(products_string) customers = {} for product in products_list: invoice = product[0] customer_id = product[-2] quantity = int(product[3]) unit_price = float(product[-3]) total = round(quantity*unit_price,2) customers.setdefault(customer_id, {}) customers[customer_id].setdefault(invoice, 0) customers[customer_id][invoice] += total return customers
def calculate_total_per_invoices(products_string): products_list = transform_products_to_list(products_string) customers = {} for product in products_list: invoice_id = product[0] customer_id = product[-2] price = float(product[-3]) amount = int(product[3]) customers.setdefault(customer_id, {}) customers[customer_id].setdefault(invoice_id, 0) customers[customer_id][invoice_id] += round(price * amount, 2) print(customers) return customers
def calculate_total_per_invoices(products_string): products_list = transform_products_to_list(products_string) results = {} for product in products_list: customer_id = product[-2] invoice_id = product[0] quantity = float(product[3]) cost = float(product[-3]) #because they are strings line_price = round(quantity * cost, 3) results.setdefault(customer_id, {}) results[customer_id].setdefault(invoice_id, 0) results[customer_id][invoice_id] += line_price return results
def calculate_total_per_invoices(products_string): products_list = transform_products_to_list(products_string) products = {} # Loop through list for product in products_list: # 1. Group customer customer_id = product[-2] # Group by customer products.setdefault(customer_id, {}) # 2. Group a invoice invoice_id = product[0] # Pull invoice unit = int(product[3]) # Pull the unit unitprice = float(product[-3]) # Pull unitprice total = unit * unitprice # Get total of unit and unitprice # Group by invoice products[customer_id].setdefault(invoice_id, 0) # Add each total to the invoice group products[customer_id][invoice_id] += round(total, 2) return products # a_dict = {} # # For loop to add keys to a_dict # for product in products_list: # invoice_id = product[0] # unit = int(product[3]) # unitprice = float(product[-3]) # total = unit * unitprice # a_dict.setdefault(invoice_id, 0) # a_dict[invoice_id] += round(total,2) # print(a_dict) # # if type(value) != int: # # a_dict[key] = None # # else: # # a_dict[key] += value ##### Reference from Quiz 2
def group_products_by_customer_and_invoice(products_string): products_list = transform_products_to_list(products_string) # Create a dictionary products = {} for product in products_list: # Pull out invoice invoice_id = product[0] # Pull out customer_id customer_id = product[-2] # Groups Customer_id and creates a new dictionary products.setdefault(customer_id, {}) # Within new dictionary, groups the invoice and creates a list products[customer_id].setdefault(invoice_id, []) # Add each invoice to list products[customer_id][invoice_id].append(product) return products
def group_products_by_customer(products_string): # Create a dictionary of different users products_list = transform_products_to_list(products_string) customers = {} for product in products_list: # From the sample data, customer id is 7th or -2 of list # When looping through the products_string, set var to the customer id customer_id = product[-2] # Set the customers dictionary default if not in dictionary customers.setdefault( customer_id, []) # Create an emptry list; test says to return a list # Similar code # if customer_id not in customers: # customers[customer_id] = [] # customers[customer_id].append(product) # Append the entire product list to customer by key customers[customer_id].append(product) # Create a key for each user # Create a list of each product return customers