[Python-Dev] More compact dictionaries with faster iteration (original) (raw)

Nick Coghlan ncoghlan at gmail.com
Wed Dec 12 01:15:34 CET 2012


On Wed, Dec 12, 2012 at 5:37 AM, Dino Viehland <dinov at microsoft.com> wrote:

OTOH changing certain dictionaries in IronPython (such as keyword args) to be ordered would certainly be possible. Personally I just wouldn't want to see it be the default as that seems like unnecessary overhead when the specialized class exists.

Which reminds me, I was going to note that one of the main gains with ordered keyword arguments, is their use in the construction of string-keyed objects where you want to be able to control the order of iteration (e.g. for serialisation or display purposes). Currently you have to go the path of something like namedtuple where you define the order of iteration in one operation, and set the values in another.

Initialising an ordered dict itself is one obvious use case, but anything else where you want to control the iteration order and set field names and values in a single call will potentially benefit.

Independently of that, I'll note that this change would make it possible to add a .sort() method to dictionaries. Any subsequent mutation of the dictionary would requiring resorting, though (which isn't really all that different from maintaining a sorted list). The performance impact definitely needs to be benchmarked though, as the need to read two memory locations rather than one for a dictionary read could have weird caching effects. (Fortunately, many of the benchmarks run on Python 3.3 now, so it should be possible to get that data fairly easily)

Cheers, Nick.

-- Nick Coghlan | ncoghlan at gmail.com | Brisbane, Australia -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.python.org/pipermail/python-dev/attachments/20121212/79d29a79/attachment.html>



More information about the Python-Dev mailing list