A question of style (finding item in list of tuples)

Roy Smith roy at panix.com
Mon May 21 08:37:29 EDT 2012


I've got this code in a django app:

    CHOICES = [
        ('NONE', 'No experience required'),
        ('SAIL', 'Sailing experience, new to racing'),
        ('RACE', 'General racing experience'),
        ('GOOD', 'Experienced racer'),
        ('ROCK', 'Rock star'),
        ]

    def experience_text(self):
        for code, text in self.CHOICES:
            if code == self.level:
                return text
        return "????"

Calling experience_text("ROCK") should return "Rock star".  Annoyingly, 
django handles this for you automatically inside a form, but if you also 
need it in your application code, you have to roll your own.

The above code works, but it occurs to me that I could use the much 
shorter:

    def experience_text(self):
        return dict(CHOICES).get("self.level", "???")

So, the question is, purely as a matter of readability, which would you 
find easier to understand when reading some new code?  Assume the list 
of choices is short enough that the cost of building a temporary dict on 
each call is negligible.  I'm just after style and readability here.



More information about the Python-list mailing list