I don't think I saw anyone point this out yet, but, using "list" as a variable name is a bad idea, because it hides the list method.
>>> x = list("abcdefg") >>> x ['a', 'b', 'c', 'd', 'e', 'f', 'g'] This works. You now have a variable named "x" that is a list. >>> list = list("hijklmnop") >>> list ['h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p'] This works, sort of. You now have a variable named "list" that is a list. But since you reused the name "list," it can no longer point to the list function. >>> y = list("qrstuv") Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'list' object is not callable And so this fails. On Tue, 12 Feb 2008, Norman Khine wrote: > Thank you all, very nice. > > Steve Willoughby wrote: > > Kent Johnson wrote: > >> Try > >> list.append({'id': 'name', 'link': ('YY','XX')[total > 0]}) > > > > I'd caution against that, though. It's clever and cute, sure, but the > > meaning of it is obfuscated enough to be unpythonic because [total > 0] > > as a subscript doesn't mean anything unless you know you're taking > > advantage of an implementation detail that booleans are 0 for false and > > 1 for true. No matter how reliable that fact may be, I don't think that > > value should be stuck into a numeric context like that. > > > >> Or, in Python 2.5, > >> list.append({'id': 'name', 'link': ('XX' if total > 0 else 'YY')}) > > > > This is much more clear, and would IMHO be fine. > > > > > > > > _______________________________________________ > > Tutor maillist - Tutor@python.org > > http://mail.python.org/mailman/listinfo/tutor > > > > _______________________________________________ > Tutor maillist - Tutor@python.org > http://mail.python.org/mailman/listinfo/tutor > _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor