On 2020-06-30 23:26, Daniel. wrote:
I just want to make clear that safe navegator is enough to deal with this.
Now that this is clear, the use case is almost always the same. I
received some json as response and want to extract a nested value.
The way I'm doing this today is overloading an infix operator (I'm using
>>) to emulate safe navegator so I do
value = data >> get('foo') >> get(0) >> get('bar')
if value:
do something
This get can be found here
https://github.com/dhilst/geckones_twitter_bots/blob/e6aefe036d30f84835026054676bd018f3339801/utils.py#L91
I started with array implementation them extended to object too. I
usually has something like this on all my projects that need to extract
data from requests, or a function that receives a dotted path, anyway..
dict.get composes so nicely so why we don't have list.get too?
Well, the safe navigator can solve this as it will compose as well as
any adhoc solution with the advantage of short circuit and also it's
brevity so ... For my use case, at last, safe navigator (or null
coalescing) will fit better than any list.get can do.
[snip]
I'd probably just write a function for it:
def get(data, default, *indexes):
try:
for index in indexes:
data = data[index]
except (IndexError, KeyError):
return default
value = get(data, None, 'foo', 0, 'bar')
if value is not None:
do something
_______________________________________________
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/A6YJUYPK4LDCXAP4EDR5MXCCRL6QOBL5/
Code of Conduct: http://python.org/psf/codeofconduct/