Kevin Mills suggested:

> > > d = {1: {2: {3: 4}}}
> > > keys= 1,2,3
> > > print(d[*keys])
> > > d[*keys] = None
> > > print(d)
> > >
> > > Hopefully it's clear from that example what I'm suggesting.

MRAB replied:

> > Would that be equivalent to d[keys[0], keys[1], keys[2]]?
> > 
> > If so, it would be equivalent to something that's already legal, 
> > namely, a subscript that's a tuple.

and Kevin responded:

> No, definitely not. d[1,2,3] and d[1][2][3] are not the same thing. 
> The latter is what I am talking about.

Ah, I read it the same as MRAB did.

I think it would be *very* unfortunate if `*args` had a different 
meaning in subscripts from the meaning elsewhere:

    keys = (1, 2, 3)

    f(*keys)  # like f(1, 2, 3)
    d[*keys]  # like d[1][2][3]

I think it might be better to start with a *function* that chains 
subscript calls, and perhaps put it in the operator module with 
itemgetter and attrgetter.

    # Untested.
    def chained_item(items, obj):
        for key in items:
            obj = obj[key]
        return obj

-- 
Steve
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/OZ3BSHDYNKBWOMLIN5VSIBS7CU3ONT3H/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to