On Wed, Feb 24, 2021 at 4:29 PM Random832 <random...@fastmail.com> wrote:
>
> AIUI the keys, values, and items collections have always had the ordering 
> guarantee that iterating over them while not modifying the underlying 
> dictionary will give the same order each time [with respect to each other, 
> and possibly also with respect to iterating over the original dictionary to 
> obtain the keys]
>

Correct, on all counts. I believe the old guarantee (before insertion
order was maintained) was that *any* change could change the iteration
order, but that .items(), .keys(), and .values() (and their iter*
counterparts) would always change together. But in practice, I believe
this kind of code has always been safe:

for key in some_dict:
    some_dict[key] += 1

I can't find anywhere in the docs that says that changes to *values*
(without changing the set of keys) won't change iteration order, but
given how common this kind of code is, I would expect that it's at
least a de facto guarantee.

ChrisA
-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to