Duncan Booth <duncan.bo...@invalid.invalid> writes: > If you want to write doctests then any stable order in the default dict > type would be helpful no matter whether it means that keys are in original > insertion or latest insertion order or sorted.
Just use "sorted" in the test code: >>> print sorted(dict((a**2,a) for a in xrange(5)).keys()) [0, 1, 4, 9, 16] > There are other use cases where maintaining insertion order is > important. For example any automated code generator which parses > its previous output and then regenerates it maintaining edits. I ran > into that before with one which just stored the methods in a Python > dict so that every so often you'd find the entire source file had > rearranged itself making a mess of version control. Still doesn't sound so bad: just include a counter with the value. Something like (untested): odict = dict(zip(methodnames, zip(methodbodies, itertools.count()))) ... gen_code(sorted(odict.iteritems(), key=lambda(name,(body,n)): n)) > It would certainly be an interesting experiment to mimic the Ruby dict > implementation in Python's dict code and see what effect it has on > performance: the Ruby page claims that while inserts are slower traversal > is much faster. I think it would need some pretty convincing arguments > though to become the default. In my usage of dicts, traversal is rather rare, but YMMV. -- http://mail.python.org/mailman/listinfo/python-list