I want to obtain the top 3 cities and items based on their sales, but the only thing I can do now is return the all cities and items with their respective sales. Without using dict, how do I obtain my desired output? Or if I use dict, how do I obtain the desired output?
purchases.txt
purchases.txt
2012-01-01 09:00 San Jose Men's Clothing 214.05 Amex 2012-01-01 09:00 Fort Worth Women's Clothing 153.57 Visa 2012-01-01 09:00 San Diego Music 66.08 Cash 2012-01-01 09:00 Pittsburgh Pet Supplies 493.51 Discover 2012-01-01 09:00 Omaha Children's Clothing 235.63 MasterCard 2012-01-01 09:00 Stockton Men's Clothing 247.18 MasterCard 2012-01-01 09:00 Austin Cameras 379.6 Visa 2012-01-01 09:00 New York Consumer Electronics 296.8 Cash 2012-01-01 09:00 Corpus Christi Toys 25.38 Discover 2012-01-01 09:00 Fort Worth Toys 213.88 Visatest.py
f = open ("purchases.txt") def separator(): str = ("="*48) print (str) return; city_seen = set() item_seen = set() citysaleslist = [] itemsaleslist= [] for line in open(sys.argv[1]): sales=float(line.split()[-2]) strsales=line.split()[-2] city=line.split('\t')[2] item=line.split('\t')[3] if city not in city_seen: # if city is not a duplicate, add to city_seen set city_seen.add(city) #Pressing tab for the bottom 2 lines will remove duplicate but combining the sales for the duplicates is impossible here. citysales="{0:<29}{1:>18}".format(city,strsales) citysaleslist.append(citysales) if item not in item_seen: # if item is not a duplicate, add to item_seen set item_seen.add(item) #Pressing tab for the bottom 2 lines will remove duplicate but combining the sales for the duplicates is impossible here. itemsales = "{0:<29}{1:>18}".format(item,strsales) itemsaleslist.append(itemsales) print("Top Three Cities \n") separator() for i in citysaleslist: print(i) separator() print("Bottom Three Cities \n") separator() separator() print("Top Three Item Categories") separator() for i in itemsaleslist: print(i) separator() print("\nBottom Three Item Categories") separator() separator()My output:
Top Three Cities ================================================ San Jose 214.05 Fort Worth 153.57 San Diego 66.08 Pittsburgh 493.51 Omaha 235.63 Stockton 247.18 Austin 379.6 New York 296.8 Corpus Christi 25.38 Fort Worth 213.88 ================================================ Bottom Three Cities ================================================ ================================================ Top Three Item Categories ================================================ Men's Clothing 214.05 Women's Clothing 153.57 Music 66.08 Pet Supplies 493.51 Children's Clothing 235.63 Men's Clothing 247.18 Cameras 379.6 Consumer Electronics 296.8 Toys 25.38 Toys 213.88 ================================================ Bottom Three Item Categories ================================================ ================================================Desired output:
Top Three Cities ================================================ Pittsburgh 493.51 Austin 379.60 Fort Worth 367.45 ================================================ Bottom Three Cities ================================================ Omaha 235.63 San Jose 214.05 San Diego 66.08 ================================================ Top Three Item Categories ================================================ Pet Supplies 493.51 Men's Clothing 461.23 Cameras 379.6 ================================================ Bottom Three Item Categories ================================================ Toys 239.26 Children's Clothing 235.63 Women's Clothing 153.57 ================================================