New submission from Eric Snow:
While the dict/OrderedDict iterators already check for additions and deletions,
using the OrderedDict.move_to_end during iteration can lead to surprising
results.
The following results in an infinite loop:
od = OrderedDict.fromkeys('abc')
last = None
for k in od:
if last is not None:
od.move_to_end(last)
last = k
Ideally we could disallow changing order during iteration, just like we
disallow deletion. Since we've gone 3 minor versions already, would it be too
late to break backward compatibility on this point?
----------
components: Library (Lib)
messages: 244718
nosy: eric.snow, rhettinger
priority: high
severity: normal
stage: test needed
status: open
title: Using OrderedDict.move_to_end during iteration is problematic.
type: behavior
versions: Python 3.4, Python 3.5, Python 3.6
_______________________________________
Python tracker <[email protected]>
<http://bugs.python.org/issue24369>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com