On 2/20/06, Jim Jewett <[EMAIL PROTECTED]> wrote: > Adam Olsen asked: > > ... d.getorset(key, func) would work in your use cases? > > It is an improvement over setdefault, because it doesn't > always evaluate the expensive func. (But why should every > call have to pass in the function, when it is a property of > the dictionary?)
Because usually it's a property of how you use it, not a property of the dictionary. The dictionary is just a generic storage mechanism. > [snip] > In other words, the program would work correctly if I passed > in a normal but huge dictionary; I want to avoid that for reasons > of efficiency. This isn't the only use for a mapping, but it is > the only one I've seen where KeyError is "expected" by the > program's normal flow. Looking at your explanation, I agree, getorset is useless for that use case. However, I'm beginning to think we shouldn't be comparing them. defaultdict is a powerful but heavyweight option, intended for complicated behavior. getorset and setdefault are intended to be very lightweight, even lighter than the "try/except KeyError" and "if key not in X: X[key] = default" memes we have right now. getorset's factory function is only appropriate for preexisting functions, not user defined ones. Essentially, I believe getorset should be discussed on its own merits, independent of the addition of a defaultdict class. Perhaps discussion of it (and the deprecation of setdefault) should wait until after defaultdict has been completed? -- Adam Olsen, aka Rhamphoryncus _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com