On Sun, 23 May 2021 at 17:22, MRAB <pyt...@mrabarnett.plus.com> wrote:
>
> On 2021-05-23 13:37, Marco Sulla wrote:
> > I propose to add a get_deep(*args, default=_sentinel) method to dict.
> >
> > It can accept a single argument, that must be an iterable, or multiple
> > arguments.
> >
> > The first element must be a key of the dict. If there's not a second
> > element, the value is returned. If it's present, it tries to use it as
> > an argument for the eventual __getitem__() of the value object, and so
> > on.
> >
> > In this process, if a KeyError, an IndexError or a TypeError is
> > raised, if default is set its value is returned, otherwise the
> > exception will be raised.
> >
> > Example:
> >
> > d = {1: [42]}
> > d.get_deep(1, 0)
> > # 42
> > d.get_deep(range(3), default=1981)
> > # 1981
> > d.get_deep((1, 1))
> > # IndexError: list index out of range
> >
> A slight problem here: a tuple (1, 1) can be a key of the dict.

This problem can raise only if you want to get the first level, but
for this purpose there's __getitem__ already.

You can have:

d = {(1, 1): [5, 7]}

and probably you will write

d.get_deep((1, 1), 1)

or

d.get_deep([(1, 1), 1])

>
> Also, if the first lookup returns a list or a tuple, and an argument can
> be an index of that list, would be make sense to add a similar method to
> lists and tuples?
> _______________________________________________
> 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/XQAFJEZ5PABLKRF7FLDOEUDKNDGF7D34/
> Code of Conduct: http://python.org/psf/codeofconduct/
_______________________________________________
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/EJLZHRMRKPD6WUDFABH6ODFBIUWCRKDF/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to