On Tue, 17 Jan 2006 18:00:00 -0700, Steven Bethard wrote: > Steve Holden wrote: >> Steven Bethard wrote: >>> Agreed. I really hope that Python 3.0 applies Raymond Hettinger's >>> suggestion "Improved default value logic for Dictionaries" from >>> http://wiki.python.org/moin/Python3%2e0Suggestions >>> >>> This would allow you to make the setdefault() call only once, instead >>> of on every lookup: >>> >>> class meh(dict): >>> def __init__(self, *args, **kwargs): >>> super(meh, self).__init__(*args, **kwargs) >>> self.setdefault(function=meh) >>> >>> STeVe >>> >> In fact, why not go one better and also add a "default" keyword >> parameter to dict()? > > It's not backwards compatible: > > >>> dict(default=4) > {'default': 4} > > And I use the **kwargs form of the dict constructor often enough to hope > that it doesn't go away in Python 3.0.
I don't like the idea of all dicts having default values. Sometimes you don't want a default value, you want an exception when the key isn't in the dict. And even if you do want defaults, sometimes you want a default which is global to the dict, and sometimes you want a default which depends on the key. More of a "missing value" than a default. I vote to leave dict just as it is, and add a subclass, either in a module or as a built in (I'm not fussed either way) for dicts-with-defaults. -- Steven. -- http://mail.python.org/mailman/listinfo/python-list