[issue33462] reversible dict

Rémi Lapeyre report at bugs.python.org
Thu May 24 06:54:16 EDT 2018


Rémi Lapeyre <remi.lapeyre at henki.fr> added the comment:

>> I think it's a reasonable expectation as a python user to be able to do reversed(dict(a=1, b=20) since the order is know defined in the specifications.

> I agree about "reasonable expectation".  But I'm interested in is it really useful in real world?

I do agree it's certainly used than the conservation of order but it's not useless either. For example, it could help to get the latest section defined in a YAML or INI file once parsed. 

>> It seems inconsistent to have an order on dict, views and not have reversed work on them.

> "Have an order" doesn't mean "reversible".  For example, single linked list is ordered, but not reversible.

> While CPython implementation can provide efficient __reverse__, adding __reverse__ means **all** Python implementation is expected to provide it.
> For example, some Python implementation may be able to implement dict with hashmap + single linked list.  If __reverse__ is added, it's not possible anymore.

Indeed they would have to use a double-linked-list here.

> "Preserve insertion order" is very useful for many people.  So it's guaranteed.
> Then how useful "reversible" in real world, for many people?

While this is true, the same argument could be said about the dict views. Many many people don't know about them but they are still an interesting feature that has its place in the standard library.

It definitely won't be the most used feature in Python nor a killer feature but it seemed important enough to be included in OrderedDict (https://github.com/python/cpython/blob/master/Lib/collections/__init__.py#L63) since 3.5 and a C implementation of OrderedDict has been added in the same release so it seems to have mattered at the time.

Having this feature in the built-in dicts could actually help to simplify the implementation of the collections module in this case.

----------

_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue33462>
_______________________________________


More information about the Python-bugs-list mailing list