[issue19427] enhancement: dictionary maths

2013-10-29 Thread R. David Murray

R. David Murray added the comment:

In the meantime the issue should be closed.  It can be reopened if consensus is 
reached.

--
nosy: +r.david.murray
resolution:  - postponed
stage:  - committed/rejected
status: open - closed

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue19427
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue19427] enhancement: dictionary maths

2013-10-29 Thread Georg Brandl

Georg Brandl added the comment:

This specialized use case has no chance of being added to the very general dict 
object.

But have a look at the collections.Counter class which does exactly what you 
propose for positive values and the +/- operations.

--
nosy: +georg.brandl

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue19427
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue19427] enhancement: dictionary maths

2013-10-28 Thread Richard Neill

New submission from Richard Neill:

It would be really nice if python supported mathematical operations on 
dictionaries. This is widely requested (eg lots of stackoverflow queries), but 
there's currently no simple way to do it.

I propose that this should work in the obvious way, i.e. for every key in 
common between the dicts, apply the operator to the set of values.  If the 
dicts have some keys that are not in common, then create the missing keys, with 
a value of zero (which does sensible things for +,-,* and will throw an error 
if missing element is a divisor). 

It should also allow a dict to be added/multiplied etc with a scalar.

If the dict contains anything other than key:value pairs (i.e. the values are 
non-scalar types), then this should throw an error.

For example:

 d1 = { 'a':1, 'b':2, 'c':3}
 d2 = { 'a':4, 'b':5, 'c':6}
 d3 = d1 + d2
 d3
{'a': 5, 'b': 7, 'c': 9}

 d4 = d1 + 17
 d4 
{'a': 18, 'b': 19, 'c': 20}

 d5 = { 'a':4, 'b':5, 'x':6}
 d6 = d1 + d5
 d6
{'a': 5, 'b': 7, 'c': 3, 'x': 6}

Perhaps this might need an import dictionarymath to enable the behaviour.

Thanks for your consideration of my idea.

--
components: Interpreter Core
messages: 201587
nosy: Richard.Neill
priority: normal
severity: normal
status: open
title: enhancement: dictionary maths
type: enhancement
versions: Python 3.5

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue19427
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue19427] enhancement: dictionary maths

2013-10-28 Thread Eric V. Smith

Eric V. Smith added the comment:

I suggest you get consensus on this idea on the python-ideas mailing list first.

--
nosy: +eric.smith

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue19427
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com