| Store | Cart

Pre-PEP: Dictionary accumulator methods

From: Paul Rubin <h...@box30.activestate.com>
18 Mar 2005 23:17:59 -0800
"Raymond Hettinger" <vze4rx4y at verizon.net> writes:
> [Michele Simionato]> > +1 for inc instead of count.> > Any takers for tally()?

I'd say "tally" has some connotation of a counter that can never go
negative.  I don't know if that behavior is desirable.  Someone suggested
deleting the key if the tally is decremented to 0.  I'd suggest instead
throwing an exception on an attempt to decrement it to less than 0.

> We should avoid abbreviations like inc() or incr() that different> people tend to abbreviate differently (for example, that is why the> new partial() function has its "keywords" argument spelled-out). 

Ok, "increment" then.

> The only other issue I see with that name is that historically> incrementing is more associated with +=1 than with +=n.  Also, there> are reasonable use cases for a negative n and it would be misleading> to call it incrementing when decrementing is what is intended.

Setting the default to 1 is enough for that.  I mean, adding a negative
number to something is normally called "subtraction", but you can still
pass a negative argument to __iadd__.

> The issue with add() is that other types with that method use it for> a radically different purpose.  For example, aSet.add(n) is not at> all similar in function to the proposed aDict.tally(n)

Hmm, ok.

> I'm curious.  When you do use setdefault, what is the typical second> argument?  In all the code I've encountered, nine times out of ten> it is [].  

Yeah, me too.

Recent Messages in this Thread
Raymond Hettinger Mar 19, 2005 01:24 am
Ivan Van Laningham Mar 19, 2005 01:34 am
Mike Rovner Mar 19, 2005 02:04 am
Paul Rubin Mar 19, 2005 05:19 am
Denis S. Otkidach Mar 19, 2005 03:24 pm
Paul Rubin Mar 19, 2005 07:17 am
Paul Rubin Mar 19, 2005 07:59 am
rab...@mweb[DOT]co[DOT]za.com (Max) Mar 20, 2005 12:13 pm
Peter Hansen Mar 20, 2005 02:19 pm
BJörn Lindqvist Mar 20, 2005 04:13 pm
Aahz Mar 19, 2005 02:04 am
Raymond Hettinger Mar 19, 2005 02:22 am
Do Re Mi chel La Si Do Mar 19, 2005 05:21 pm
Jeff Shannon Mar 19, 2005 02:05 am
Roose Mar 19, 2005 02:46 am
Raymond Hettinger Mar 19, 2005 04:31 am
Roose Mar 19, 2005 08:09 am
Raymond Hettinger Mar 19, 2005 08:20 am
Roose Mar 19, 2005 08:54 am
Peter Otten Mar 19, 2005 09:24 am
Raymond Hettinger Mar 19, 2005 09:31 am
Roose Mar 19, 2005 05:48 pm
Bengt Richter Mar 19, 2005 03:14 am
Bengt Richter Mar 19, 2005 05:02 am
Raymond Hettinger Mar 19, 2005 07:54 am
Aahz Mar 19, 2005 04:22 pm
Kent Johnson Mar 19, 2005 12:13 pm
Bengt Richter Mar 19, 2005 09:13 pm
Raymond Hettinger Mar 19, 2005 10:15 pm
Paul Rubin Mar 19, 2005 10:23 pm
Mike Rovner Mar 20, 2005 08:10 am
Paul Rubin Mar 20, 2005 08:20 am
Reinhold Birkenfeld Mar 20, 2005 10:25 am
Mike Rovner Mar 20, 2005 08:04 pm
Jeff Epler Mar 19, 2005 03:55 am
Brian van den Broek Mar 19, 2005 04:45 am
Michael Spencer Mar 19, 2005 06:43 am
Carl Banks Mar 19, 2005 12:18 pm
Dan Sommers Mar 19, 2005 01:12 pm
Raymond Hettinger Mar 19, 2005 03:17 pm
Ivan Van Laningham Mar 19, 2005 03:31 pm
El Pitonero Mar 19, 2005 04:21 pm
Dan Sommers Mar 19, 2005 07:00 pm
Paul McGuire Mar 19, 2005 04:07 pm
El Pitonero Mar 19, 2005 03:42 pm
Raymond Hettinger Mar 19, 2005 05:00 pm
El Pitonero Mar 19, 2005 06:10 pm
Aahz Mar 19, 2005 04:16 pm
George Sakkis Mar 19, 2005 06:18 pm
Paul Rubin Mar 19, 2005 08:30 pm
Colin J. Williams Mar 20, 2005 06:10 pm
Kay Schluehr Mar 19, 2005 07:33 pm
Ron Mar 19, 2005 11:10 pm
George Sakkis Mar 19, 2005 11:39 pm
John Machin Mar 20, 2005 01:42 am
George Sakkis Mar 20, 2005 04:04 am
Kay Schluehr Mar 20, 2005 04:07 am
Michael Spencer Mar 20, 2005 04:38 am
George Sakkis Mar 20, 2005 05:35 am
Kay Schluehr Mar 20, 2005 06:34 am
Jeremy Bowers Mar 20, 2005 01:48 pm
Reinhold Birkenfeld Mar 20, 2005 10:27 am
George Sakkis Mar 20, 2005 06:02 am
John Machin Mar 19, 2005 09:07 pm
Reinhold Birkenfeld Mar 19, 2005 10:12 pm
John Machin Mar 19, 2005 10:38 pm
Reinhold Birkenfeld Mar 20, 2005 10:26 am
David Eppstein Mar 19, 2005 10:47 pm
Michael Spencer Mar 19, 2005 11:46 pm
Alexander Schmolck Mar 20, 2005 01:26 am
Beni Cherniavsky Mar 20, 2005 03:05 am
Alexander Schmolck Mar 20, 2005 07:25 pm
Michele Simionato Mar 20, 2005 04:52 am
Aahz Mar 20, 2005 09:05 pm
David Eppstein Mar 20, 2005 11:14 pm
Ron Mar 21, 2005 05:21 am
Michele Simionato Mar 21, 2005 04:07 pm
George Sakkis Mar 21, 2005 09:09 pm
Greg Ewing Mar 22, 2005 01:58 am
Steve Holden Mar 22, 2005 01:25 pm
Ron Mar 20, 2005 05:43 am
Duncan Booth Mar 20, 2005 09:52 am
Roose Mar 20, 2005 10:34 am
Duncan Booth Mar 20, 2005 04:29 pm
Roose Mar 20, 2005 06:46 pm
Kay Schluehr Mar 20, 2005 10:46 am
Matteo DellAmico Mar 20, 2005 03:11 pm
Kay Schluehr Mar 20, 2005 05:55 pm
Matteo DellAmico Mar 20, 2005 07:23 pm
Matteo DellAmico Mar 20, 2005 09:55 am
Magnus Lie Hetland Mar 20, 2005 03:55 pm
Francis Girard Mar 20, 2005 07:49 pm
AndrewN Mar 21, 2005 03:06 pm
Evan Simpson Mar 21, 2005 11:39 pm
Christos TZOTZIOY Georgiou Mar 23, 2005 12:37 am
Kent Johnson Mar 19, 2005 12:19 pm
Brian van den Broek Mar 19, 2005 05:31 pm
Raymond Hettinger Mar 19, 2005 04:18 am
Jeff Epler Mar 19, 2005 02:00 pm
Raymond Hettinger Mar 19, 2005 03:17 pm
George Sakkis Mar 19, 2005 05:43 pm
David Eppstein Mar 19, 2005 10:50 pm
hara...@gmail.com Mar 21, 2005 10:32 am
Roose Mar 22, 2005 04:14 am
bear...@lycos.com Mar 22, 2005 10:37 pm
George Sakkis Mar 20, 2005 12:45 am
Michele Simionato Mar 19, 2005 07:55 am
Raymond Hettinger Mar 19, 2005 08:10 am
Pierre Barbier de Reuille Mar 19, 2005 01:04 pm
Messages in this thread