P
Patrick Maupin
Duncan Booth showed how to solve a problem posed by Mathijs. This is
very similar to Duncan's solution, except I (ab)use setdefault on a
regular basis...
.... res = {}
.... for item in t:
.... res.setdefault(item,[0])[0] += 1
.... return res
....
Actually, this brings up an interesting point:
SyntaxError: can't assign to function call
I understand why this doesn't work, but it would sure be nice if it
did. I think somebody was mentioning "mutable ints" at one point,
which is basically what I abuse [0] to provide. If I were doing a lot
of this in one place, I would code a mutable integer class, and then
the rest of the code would get simpler.
Regards,
Pat
very similar to Duncan's solution, except I (ab)use setdefault on a
regular basis...
.... res = {}
.... for item in t:
.... res.setdefault(item,[0])[0] += 1
.... return res
....
ref = [2,2,4,1,1]
lst = [2,2,5,2,4]
oref = occurrences(ref)
sum(min(v[0],oref.get(k,[0])[0]) for (k,v) in occurrences(lst).iteritems()) 3
Actually, this brings up an interesting point:
SyntaxError: can't assign to function call
I understand why this doesn't work, but it would sure be nice if it
did. I think somebody was mentioning "mutable ints" at one point,
which is basically what I abuse [0] to provide. If I were doing a lot
of this in one place, I would code a mutable integer class, and then
the rest of the code would get simpler.
Regards,
Pat