def format_and_convert_benefit_dict(dct,formatStr,benefitConvertUnits,benefitUnits): oneDimDict = False for t in sorted(dct): if type(dct[t]) is dict: multiply_dict_by_constant(dct[t],benefitConvertUnits[t]) #formatWithUnits = formatStr + benefitUnits[t] format_dict_as_strings(dct[t],formatStr) else: oneDimDict = True dct[t] *= benefitConvertUnits[t] if oneDimDict: format_dict_as_strings(dct,formatStr) displayDict = {} for t in sorted(dct): key = t+' ('+benefitUnits[t]+')' displayDict[key] = dct[t] return(displayDict)
def print_output(solutionDict, benefitUnits, benefitConvertUnits): benTotsByBenefit = solutionDict['benTotsByBenefit'] displayDict = format_and_convert_benefit_dict(benTotsByBenefit, "%0.2f", benefitConvertUnits, benefitUnits) print "Benefits:" print yaml.dump(displayDict) investmentTotal = solutionDict['investmentTotal'] investmentTotalMillions = investmentTotal / 1e6 print "Total GSI Investment Required to Obtain These Benefits: $%0.2f Million\n" % investmentTotalMillions while True: print "\n Choose one of the following options for INVESTMENT details:" print "0 - No more details" print "1 - By geographic zone" print "2 - By land use" print "3 - By green infrastructure technology" print "4 - By zone and by land use" print "5 - By zone and by green infrastructure technology" print "6 - By land use and by green infrastructure technology" print "7 - By zone and by land use and by green infrastructure technology" stringIn = raw_input("Enter your choice: ") try: displayOption = int(stringIn) except ValueError: print "\nSORRY: %s is not an option - TRY AGAIN" % stringIn continue print '' if displayOption == 0: break elif displayOption == 1: showDict = deepcopy(solutionDict['invTotsByZone']) multiply_dict_by_constant(showDict, 1e-6) # convert to $Million format_dict_as_strings(showDict, "$ %0.2f Million") print "Investment Dollars By Zone:" print yaml.dump(showDict) elif displayOption == 2: showDict = deepcopy(solutionDict['invTotsByLanduse']) multiply_dict_by_constant(showDict, 1e-6) # convert to $Million format_dict_as_strings(showDict, "$ %0.2f Million") print "Investment Dollars By Land Use:" print yaml.dump(showDict) elif displayOption == 3: showDict = deepcopy(solutionDict['invTotsByGi']) multiply_dict_by_constant(showDict, 1e-6) # convert to $Million format_dict_as_strings(showDict, "$ %0.2f Million") print "Investment Dollars By GSI Technology:" print yaml.dump(showDict) elif displayOption == 4: showDict = deepcopy(solutionDict['invTotsByZoneByLanduse']) multiply_dict_by_constant(showDict, 1e-6) # convert to $Million format_dict_as_strings(showDict, "$%0.2f Million") print "Investment Dollars By Zone AND By Landuse:" print yaml.dump(showDict) elif displayOption == 5: showDict = deepcopy(solutionDict['invTotsByZoneByGi']) multiply_dict_by_constant(showDict, 1e-6) # convert to $Million format_dict_as_strings(showDict, "$%0.2f Million") print "Investment Dollars By Zone AND By GSI Technology:" print yaml.dump(showDict) elif displayOption == 6: showDict = deepcopy(solutionDict['invTotsByLanduseByGi']) multiply_dict_by_constant(showDict, 1e-6) # convert to $Million format_dict_as_strings(showDict, "$%0.2f Million") print "Investment Dollars By Land Use AND By GSI Technology:" print yaml.dump(showDict) elif displayOption == 7: showDict = deepcopy(solutionDict['decisions']) multiply_dict_by_constant(showDict, 1e-6) # convert to $Million format_dict_as_strings(showDict, "$%0.4f Million") print "Investment Dollars By Zone AND By Land Use AND By GSI Technology:" print yaml.dump(showDict) else: print "SORRY: %d is not an option - TRY AGAIN" % displayOption while True: print "\n Choose one of the following options for BENEFIT details:" print "0 - No more details" print "1 - By geographic zone" print "2 - By land use" print "3 - By green infrastructure technology" print "4 - By zone and by land use" print "5 - By zone and by green infrastructure technology" print "6 - By land use and by green infrastructure technology" print "7 - By zone and by land use and by green infrastructure technology" stringIn = raw_input("Enter your choice: ") try: displayOption = int(stringIn) except ValueError: print "\nSORRY: %s is not an option - TRY AGAIN" % stringIn continue print '' if displayOption == 0: break elif displayOption == 1: showDict = deepcopy(solutionDict['benTotsByBenefitByZone']) #multiply_dict_by_constant(showDict,1e-6) # convert to $Million displayDict = format_and_convert_benefit_dict( showDict, "%0.2f", benefitConvertUnits, benefitUnits) print "Benefits By Zone:" print yaml.dump(displayDict) elif displayOption == 2: showDict = deepcopy(solutionDict['benTotsByBenefitByLanduse']) #multiply_dict_by_constant(showDict,1e-6) # convert to $Million displayDict = format_and_convert_benefit_dict( showDict, "%0.2f", benefitConvertUnits, benefitUnits) print "Benefits By Land Use:" print yaml.dump(displayDict) elif displayOption == 3: showDict = deepcopy(solutionDict['benTotsByBenefitByGi']) #multiply_dict_by_constant(showDict,1e-6) # convert to $Million displayDict = format_and_convert_benefit_dict( showDict, "%0.2f", benefitConvertUnits, benefitUnits) print "Benefits By GSI Technology:" print yaml.dump(displayDict) elif displayOption == 4: showDict = deepcopy( solutionDict['benTotsByBenefitByZoneByLanduse']) #multiply_dict_by_constant(showDict,1e-6) # convert to $Million displayDict = format_and_convert_benefit_dict( showDict, "%0.2f", benefitConvertUnits, benefitUnits) print "Benefits By Zone AND By Landuse:" print yaml.dump(displayDict) elif displayOption == 5: showDict = deepcopy(solutionDict['benTotsByBenefitByZoneByGi']) #multiply_dict_by_constant(showDict,1e-6) # convert to $Million displayDict = format_and_convert_benefit_dict( showDict, "%0.2f", benefitConvertUnits, benefitUnits) print "Benefits By Zone AND By GSI Technology:" print yaml.dump(displayDict) elif displayOption == 6: showDict = deepcopy(solutionDict['benTotsByBenefitByLanduseByGi']) #multiply_dict_by_constant(showDict,1e-6) # convert to $Million displayDict = format_and_convert_benefit_dict( showDict, "%0.2f", benefitConvertUnits, benefitUnits) print "Benefits By Land Use AND By GSI Technology:" print yaml.dump(displayDict) elif displayOption == 7: showDict = deepcopy(solutionDict['benefitsByZoneByLanduseByGi']) #multiply_dict_by_constant(showDict,1.0) # convert to $Million displayDict = format_and_convert_benefit_dict( showDict, "%0.4f", benefitConvertUnits, benefitUnits) print "Benefits By Zone AND By Land Use AND By GSI Technology:" print yaml.dump(displayDict) else: print "SORRY: %d is not an option - TRY AGAIN" % displayOption