On Apr 10, 2020, at 15:53, Steele Farnsworth <swfarnswo...@gmail.com> wrote:
> 
> I have implemented a class in the C code of the collections module which has 
> similar behavior to the defaultdict class. This class, dynamicdict, supplies 
> values for keys that have not yet been added using a default factory 
> callable, but unlike defaultdict, the missing key itself is passed to the 
> callable. This code can be seen here: 
> https://github.com/swfarnsworth/cpython/blob/3.8/Modules/_collectionsmodule.c#L2234

That sounds like exactly the functionality for dict.__missing__, which is 
already there. Why can’t you just subclass dict and override that? Is it a 
readability issue, or a performance issue, or do you need to have a factory 
function that’s different per instance or accessible as an attribute or some 
other feature exactly like defaultdict, or…?

There might well be a good answer to one of these—although unless that good 
answer is performance, it seems like this should be a 5-line class in Python, 
not a custom C class. (Keep in mind that defaultdict was added somewhere around 
2.4 or 2.5, while __missing__ has only been there since somewhere around 
2.7/3.3. I’ll bet it would be different if it were invented today.)

_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/V32R2QP656EACQQPHJMUPCSXL6LTZU6J/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to