* Steve D'Aprano (Sun, 20 Nov 2016 22:40:19 +1100) > > Further thoughts come to mind, after looking more closely at your code. > > On Sun, 20 Nov 2016 08:27 pm, Thorsten Kampe wrote: > > > def values(inst): > > if isinstance(inst._generic, dict): > > return inst._generic.values() > > else: > > try: > > return list(zip(*inst._generic))[1] > > except IndexError: # empty GenericDict > > return () > > That's... weird. Sometimes your instance will return a list, and sometimes a > tuple. So if you write code expecting a list, it will suddenly and > unexpectedly break when the instance is empty. > > A better way of writing this is: > > def values(inst): > if isinstance(inst._generic, dict): > return inst._generic.values() > else: > return [t[1] for t in inst._generic]
You are right, I modified it to `return [value for key, value in inst._generic]` ...which is more more intelligible than my original try/except/list (zip) Thanks, Thorsten -- https://mail.python.org/mailman/listinfo/python-list