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)
Example #2
0
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