On Fri, Sep 19, 2014 at 8:59 PM, Steven D'Aprano <steve+comp.lang.pyt...@pearwood.info> wrote: >> https://docs.python.org/3.4/library/stdtypes.html#dict-views >> """If keys, values and items views are iterated over with no >> intervening modifications to the dictionary, the order of items will >> directly correspond.""" >> So if iterating over d.keys() and then d.values() with no mutations is >> guaranteed to give the same order, then so is iterating over d.keys(), >> then d.keys(), then d.values(), > > Not so! So long as the iteration of values() matched the *second* iteration > of keys(), it would be allowed. There's nothing which says that the first > iteration of keys() has to match the second.
I disagree. Between the first iteration of keys() and the iteration of values(), there were no modifications to the dictionary - another iteration over keys() isn't a modification - ergo the guarantee ought to hold. If you replace that inner iteration with the opening of a file, or the division of a float by a Decimal, or the definition of a new class, I'm sure everyone would agree that the guarantee still holds, because they don't change the dict; so why should iterating over keys() be any different? ChrisA -- https://mail.python.org/mailman/listinfo/python-list