On Mon, Dec 18, 2017 at 6:51 PM, Joel Croteau <[email protected]> wrote:
> It would be useful in many scenarios for values in collections.Counter to be
> allowed to be floating point. I know that Counter nominally emulates a
> multiset, which would suggest only integer values, but in a more general
> sense, it could be an accumulator of either floating point or integer data.
> As near as I can tell, Collection already does support float values in both
> Python 2.7 and 3.6, and the way the code is implemented, this change should
> be a no-op. All that is required is to update the documentation to say
> floating-point values are allowed, as it currently says only integers are
> allowed.

That's beyond the scope of Counter. I think what you really want is a
generalization of Counter which represents a key'd number bag. A dict
of key=>number which supports arithmetic operations, like Numpy arrays
are to lists.

Example methods:
    __init__(...): Like dict's version, but it will combine the values
of duplicate keys in its params.
    update(...): Similar to __init__.
   fromkeys(...): Like dict's version, but uses 0 or 1 as the default
value, and combines values like the constructor. With value=1, this is
roughly equivalent to the Counter constructor.
    <arithmetic operators>: Arithmetic with other number bags, with
dicts, and with number-like values.
   clearsmall(tolerance=0): Removes keys whose values are close to 0.

Other methods may take inspiration from Numpy.

The class should probably be a third-party package (and probably
already is), so that the method list can be solidified first.
_______________________________________________
Python-ideas mailing list
[email protected]
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to