[Python-ideas] Indicate if an iterable is ordered or not

Eric Snow ericsnowcurrently at gmail.com
Tue Sep 24 18:15:37 CEST 2013


Iterables are not necessarily ordered (e.g. dict vs. OrderedDict).
Sequences are but Sets aren't.  I'm not aware of any good way
currently to know if an arbitrary iterable is ordered.  Without an
explicit indicator of ordered-ness, you must know in advance for each
specific type.

One possible solution is an __isordered__ attribute (on the class),
set to a boolean.  The absence of the attribute would imply False.

Such an attribute would be added to existing types:

* collections.abc.Iterable (default: False)
* list (True)
* tuple (True)
* set (False)
* dict (False)
* collections.OrderedDict (True)
* ...

Thoughts?

-eric


More information about the Python-ideas mailing list