Counting things fast - was Re: Summing a 2D list
Paddy
paddy3118 at googlemail.com
Thu Jun 12 14:07:43 EDT 2008
On Jun 12, 4:14 pm, Gerhard Häring <g... at ghaering.de> wrote:
> Aidan wrote:
> > does this work for you?
>
> > users = [1,1,1,2,2,3,4,4,4]
> > score = [0,1,5,3,1,2,3,3,2]
>
> > d = dict()
>
> > for u,s in zip(users,score):
> > if d.has_key(u):
> > d[u] += s
> > else:
> > d[u] = s
>
> > for key in d.keys():
> > print 'user: %d\nscore: %d\n' % (key,d[key])
>
> I've recently had the very same problem and needed to optimize for the
> best solution. I've tried quite a few, including:
>
> 1) using a dictionary with a default value
>
> d = collections.defaultdict(lambda: 0)
> d[key] += value
>
<<SNIP>>
> -- Gerhard
This might be faster, by avoiding the lambda:
d = collections.defaultdict(int)
d[key] += value
- Paddy.
More information about the Python-list
mailing list