Search code examples
pythonlambda

How can I change this code to not use the lambda function?


import csv                         #working with csv files
from datetime import datetime      #this will allow accessing time for later use

#initialize class for every output
class InventoryReports:
    def __init__(self, item_list):
        self.item_list = item_list      #provide list to create new file


    #Part a
    #Create FullInventory.csv for entire inventory
    #Following order ID, manufacture name, item type, price, service date, damaged
    def fullInventory(self):
        with open('FullInventory.csv', 'w') as file:
            items = self.item_list
            keys = sorted(items.keys(), key=lambda x: items[x]['manufacturer'])              #sorted alphabetically by manufacture
            for item in keys:
                id = item
                manufacture = items[item]['manufacturer']
                itemType = items[item]['item_type']
                price = items[item]['price']
                serviceDate = items[item]['service_date']
                damaged = items[item]['damaged']
                file.write('{},{},{},{},{},{}\n'.format(id, manufacture, itemType, price, serviceDate, damaged))

Solution

  • Here is a very verbose method, untested.

    import csv                         #working with csv files
    from datetime import datetime      #this will allow accessing time for later use
    
    #initialize class for every output
    class InventoryReports:
        def __init__(self, item_list):
            self.item_list = item_list      #provide list to create new file
    
        def fullInventory(self):
            with open('FullInventory.csv', 'w') as file:
                items = self.item_list     
                for i in range(len(items)):
                    for j in range(len(items) - 1):
                        if items[j][2] > items[j+1][2]:
                            items[j], items[j+1] = items[j+1], items[j]
                for i in range(len(items)):
                    for j in range(len(items) - 1):
                        if items[j][1] > items[j+1][1]:
                            items[j], items[j+1] = items[j+1], items[j]
                for i in range(len(items)):
                    for j in range(len(items) - 1):
                        if items[j][3] > items[j+1][3]:
                            items[j], items[j+1] = items[j+1], items[j]
                # write header
                file.write('ID,Manufacturer,Item Type,Price,Service Date,Damage\n')
                # write items
                for item in items:
                    for i in range(len(item)):
                        if i == 0:
                            file.write(item[i])
                        else:
                            file.write(',' + item[i])
                    file.write('\n')
                    id = item
                    manufacture = items[item]['manufacturer']
                    itemType = items[item]['item_type']
                    price = items[item]['price']
                    serviceDate = items[item]['service_date']
                    damaged = items[item]['damaged']
                    file.write('{},{},{},{},{},{}\n'.format(id, manufacture, itemType, price, serviceDate, damaged))