EXOR or symmetric difference for the Counter class

Paddy paddy3118 at googlemail.com
Sat Aug 14 00:19:55 CEST 2010


On Aug 13, 6:36 am, Steven D'Aprano <st... at REMOVE-THIS-
cybersource.com.au> wrote:
> On Thu, 12 Aug 2010 13:20:19 -0700, Paddy wrote:
> > I find myself needing to calculate the difference between two Counters
> > or multisets or bags.
>
> Is this collections.Counter from Python 3.1? If so, you should say so,
> and if not, you should tell us which Counter class this is. It will save
> people (by which I mean *me*) from spending an unrewarding few minutes
> trying to import Counter in Python 2.5 and writing up a sarcastic
> response ... :)
>
> > I want those items that are unique to each bag. I know how to calculate
> > it:
>
> >     >>> b = Counter(a=1, b=2)
> >     >>> c = Counter(a=3, b=1)
> >     >>> diff = (b - c) + (c - b)
> >     >>> (b - c)
> >     Counter({'b': 1})
> >     >>> (c - b)
> >     Counter({'a': 2})
> >     >>> diff
> >     Counter({'a': 2, 'b': 1})
>
> > But thought why doesn't this operation appear already as a method of the
> > class?
>
> Don't know. Perhaps you should put in a feature request.
>
> --
> Steven

Yes it is Counter in both 3.1 and 2.7 (And somewhere on Activestate
too).

Before I put in a feature request, I wanted to know if other have seen
the need.



More information about the Python-list mailing list