[portland] Dictionary As Switch Statement

Rich Shepard rshepard at appl-ecosys.com
Fri Jan 18 01:16:46 CET 2008

   I want to use a dictionary to select the appropriate function to call
based on the key value. However, I'm missing something simple here as I try
to implement it.

   The dictionary:

     curvePlot = {
       'Decay S-Curve'     : zCurve(self),
       'Bell Curve'        : bellCurve(self),
       'Growth S-Curve'    : sCurve(self),
       'Beta'              : betaCurve(self),
       'Data'              : dataCurve(self),
       'Linear Increasing' : linIncrCurve(self),
       'Linear Decreasing' : linDecrCurve(self),
       'Left Shoulder'     : leftShouldCurve(self),
       'Trapezoid'         : trapCurve(self),
       'Right Shoulder'    : rightShouldCurve(self),
       'Triangle'          : triangCurve(self),
       'Singleton'         : singleCurve(self),
       'Rectangle'         : rectCurve(self),
       'Outcome'           : resultsCurve(self)

   I can print out the keys, in a different order; 'print curvePlot.keys()'

['Left Shoulder', 'Singleton', 'Outcome', 'Bell Curve', 'Right
Shoulder', 'Growth S-Curve', 'Beta', 'Linear Increasing', 'Decay S-Curve',
'Linear Decreasing', 'Trapezoid', 'Triangle', 'Data', 'Rectangle']

   But, when I try to print the entire dictionary, the values are not shown;
'print curvePlot' produces:

{'Left Shoulder': None, 'Singleton': None, 'Outcome': None, 'Bell Curve':
None, 'Right Shoulder': None, 'Growth S-Curve': None, 'Beta': None, 'Linear
Increasing': None, 'Decay S-Curve': None, 'Linear Decreasing': None,
'Trapezoid': None, 'Triangle': None, 'Data': None, 'Rectangle': None}

   What have I done incorrectly that I cannot produce the value for a given
key? When I pass the value of the key (it's the fifth item in a tuple so
it's addressed as 'row[4]') all I get is 'None.'


Richard B. Shepard, Ph.D.               |  Integrity            Credibility
Applied Ecosystem Services, Inc.        |            Innovation
<http://www.appl-ecosys.com>     Voice: 503-667-4517      Fax: 503-667-8863

More information about the Portland mailing list