On 3 Sep 2019, at 14:56, Paul Moore <p.f.moore@gmail.com> wrote:

On Tue, 3 Sep 2019 at 13:38, None via Python-ideas
<python-ideas@python.org> wrote:

I really believe that a nested key retrieval mechanism should be a first-class offering of the standard library.  It is extremely common in the Python ecosystem to find developers working with data sets comprised of nested data structures.  Serializing and deserializing JSON is one of the most common functions developers do today, too.  As this is a common task being performed by hundreds of thousands of developers, wouldn't it better if we had one canonical way to do it (in the spirit of PEP-20 and having one obvious way to do things)?

There's a PyPI package, glom (https://pypi.org/project/glom/) that
appears to do what you are after, as well as a lot more. Maybe that is
something you should look into.

There are many more similar too. 

There's one in tri.declarative: https://trideclarative.readthedocs.io/en/latest/#get-set-attribute-given-a-path-string

There's one in pyrsistent: https://github.com/tobgu/pyrsistent#transformations (the docs mostly talk about the transformation part because it's the thing you probably want in pyrsistent).

I agree fully with your point that use cases differ so the functions will differ. In glom the paths are "a.b.c", in tri.declarative they are "a__b__c" and in pyrsistent they are ['a', 'b', 'c']. All three makes sense from their respective use cases, and they can't be unified.

/ Anders