On Wed, 03 May 2006 17:51:03 +0000, Edward Elliott wrote: > Steve R. Hastings wrote: >> You could also use a function that counts all different values in a list, >> reducing the list to a dictionary whose keys are the unique values from >> the list. > > Wouldn't reducing to a set instead of a dict make more sense if all you want > to do is count uniq elements?
My apologies for not explaining tally() better. The dict has one key for each unique element, and the value associated with each key is a count of how many times that element appeared in the original list. lst = ['a', 'b', 'b', 'c', 'c', 'c'] d = iterwrap.tally(lst) print d # prints something like: {'a': 1, 'c': 3, 'b': 2} If you didn't care how many times the values appeared in the original list, and just just wanted the unique values, then a set would be perfect. If you happen to have tally(), it is an easy way to solve the original problem: figure out whether a list has exactly one true value in it. d = tally(bool(x) for x in lst) if d[True] == 1: print "and there was much rejoicing" -- Steve R. Hastings "Vita est" [EMAIL PROTECTED] http://www.blarg.net/~steveha -- http://mail.python.org/mailman/listinfo/python-list