tallying occurrences in list
Magdoll
magdoll at gmail.com
Fri Jun 4 14:36:35 EDT 2010
On Jun 4, 11:28 am, Paul Rubin <no.em... at nospam.invalid> wrote:
> kj <no.em... at please.post> writes:
> > 1. is there a standard name for it?
>
> I don't know of one, or a stdlib for it, but it's pretty trivial.
>
> > def tally(c):
> > t = dict()
> > for x in c:
> > t[x] = t.get(x, 0) + 1
> > return sorted(t.items(), key=lambda x: (-x[1], x[0]))
>
> I like to use defaultdict and tuple unpacking for code like that:
>
> from collections import defaultdict
> def tally(c):
> t = defaultdict(int)
> for x in c:
> t[x] += 1
> return sorted(t.iteritems(), key=lambda (k,v): (-v, k))
I would also very much like to see this become part of the standard
library. Sure the code is easy to write but I use this incredibly
often and I've always wished I would have a one-line function call
that has the same output as the mysql query:
"SELECT id, count(*) FROM table GROUP BY somefield"
or maybe there is already a short solution to this that I'm not aware
of...
More information about the Python-list
mailing list