[Python-Dev] dict.addlist() (original) (raw)

Nick Coghlan ncoghlan at iinet.net.au
Tue Jan 20 10:14:12 EST 2004


Barry Warsaw wrote:

On Tue, 2004-01-20 at 09:25, Kevin Jacobs wrote:

-1: I use .setdefault all the time with non-list default arguments. The dict interface is getting complex enough that adding more clutter will make it even harder to teach optimal idiomatic Python to newbies. I completely agree with both points.

As a relative newbie (and not having done much coding in recent months), I have to say it took me a while to figure out what "d.setdefault(k, []).append(v)" actually did (I had previously only encountered dict.getdefault, and the meaning of dict.setdefault was not immediately obvious to me).

If I saw "d.addlist(some_variable, some_other_variable)", I certainly would not automatically interpret it as "append some_other_variable to the value keyed by some_variable, creating that value as the empty list if it is not present". At least the current approach breaks this into two steps, and gave me a chance to figure it out without diving into the docs to find out what the method does.

This does seem to be another example where a 'defaulting dictionary' with a settable factory method would seem to be useful.

Then:

dd = defaultingdict(factory=list) ...other code uses dict... dd[k].append(v)

(As others have pointed out, this can't be a keyword argument on standard dictionaries without interfering with the current automatic population of the created dictionary with the keyword dictionary)

Regards, Nick.

-- Nick Coghlan | Brisbane, Australia Email: ncoghlan at email.com | Mobile: +61 409 573 268



More information about the Python-Dev mailing list