[Python-Dev] multidict API
ianb at colorstudy.com
Fri Mar 10 18:25:26 CET 2006
I'm not really making any actionable proposal here, so maybe this is
off-topic; if so, sorry.
Back during the defaultdict discussion I proposed a multidict object
-- right now I need to implement one to represent web form submissions.
It would also be ordered in that case.
The question then is what the API should look like for such an object --
an ordered, multi-value dictionary. I would really like if this object
was in the collections module, but I'm too lazy to try to pursue that
now. But if it did show up, I'd like the class I write to look the
same. There's some open questions I see:
* Does __getitem__ return a list of all matching keys (never a KeyError,
though possibly returning ), or does it return the first matching key?
* Either way, I assume there will be another method, like getfirst or
getall, that will present the other choice. What would it be named?
Should it have a default?
* Should there be a method to get a single value, that implicitly
asserts that there is only one matching key?
* Should the default for .get() be None, or something else?
* Does __setitem__ overwrite any or all values with matching keys?
* If so, there should be another method like .add(key, value) which does
not overwrite. Or, if __setitem__ does not overwrite, then there should
be a method that does.
* Does __delitem__ raise a KeyError if the key is not found?
* Does .keys() return all unique keys, or all keys in order (meaning a
key may show up more than once in the list)?
I really could go either way on all of these questions, though I think
there's constraints -- answer one of the questions and another becomes
obvious. But you can answer them in whatever order you want.
Ian Bicking / ianb at colorstudy.com / http://blog.ianbicking.org
More information about the Python-Dev