On 05/21/12 08:10, Steven D'Aprano wrote: > On Mon, 21 May 2012 08:37:29 -0400, Roy Smith wrote: > > [...] >> 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? > > Definitely the dictionary lookup. > > Rather than convert list CHOICES to a dict every time, you might convert > it to a dict *once*, then just write: > > return CHOICES.get(self.level, "???")
While I back Steven's suggestion, I'd keep *both* around. The dictionary isn't inherently ordered, so presenting it to the user may come out with a differing orders depending on how code gets hit. So I'd do CHOICES = [ ("NONE", "No experience required"), ... ] CHOICE_DICT = dict(CHOICES) once at setup, and then use Steven's suggestion of return CHOICES_DICT.get(self.level, "???") then you get the best of both worlds: You can specify the order for presentation using CHOICES, and get O(1) lookups and defaulting via CHOICE_DICT. -tkc -- http://mail.python.org/mailman/listinfo/python-list