On Sun, 23 May 2021 at 19:41, Todd <toddr...@gmail.com> wrote: > > The pytoolz/cytoolz project already has this: > https://toolz.readthedocs.io/en/latest/api.html#toolz.dicttoolz.get_in
It seems a project that is used by many people. I think that JSON is so much used that that function could be added to the builtin dict. > > On Sun, May 23, 2021, 11:44 Chris Angelico <ros...@gmail.com> wrote: >> >> On Mon, May 24, 2021 at 1:24 AM MRAB <pyt...@mrabarnett.plus.com> wrote: >> > 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? >> >> Or, better: make it a stand-alone function, not a method of anything. >> Although that kinda takes it out of python-ideas territory because it >> could easily be a personal library function instead: >> >> _sentinel = object() # or see other proposals >> def get_deep(obj, *keys, default=_sentinel): >> if len(keys) == 1: keys = list(keys[0]) >> try: >> for key in keys: >> obj = obj[key] >> except (LookupError, TypeError): # the OP did include TypeError >> if default is not _sentinel: return default >> raise >> return obj >> >> Done. Personally, I'd just go with "except LookupError:", but this is >> another advantage of personal library functions: you don't have to >> bikeshed them with everyone else :) >> >> ChrisA >> _______________________________________________ >> 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/YM6KCRUJV2ROYV2TC44DWECFJV6TG4A6/ >> 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/MEQM2SZQD5KPVZHUM655DRR4EV42U63Y/ > 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/3VAIGV6CPLOMEY7K2Z4XWIXQ7HXBJXQ6/ Code of Conduct: http://python.org/psf/codeofconduct/