On 4/26/19 11:03 AM, Joshua Marshall wrote:
Hello all,
I have a use case where I need to send a `dict` to a module as an
argument. Inside of this, it has a multi-level structure, but each
field I need to set may only be set to a single value. Fields must be
valid, non-empty strings. It looks a lot like the following in my code:
```
def my_func(val_1, val_2):
return {
"field_1": val_1,
"next_depth": {
"field_2": val_2
}
}
```
What I want to do is:
```
def my_func(val_1, val_2):
return {
"field_1": val_1 if val_1,
"next_depth": {
"field_2": val_2 if val_2
}
}
```
It's not clear in this example what you would want if val_2 is None.
Should it be:
{ "field_1": val_1 }
or:
{ "field_1": val_1, "next_depth": {} }
?
Better would be to build your dict with the tools you already have:
d = {}
if val_1:
d['field_1'] = val_1
if val_2:
d['next_depth'] = { 'field_2': val_2 }
You have total control over the results, and it doesn't take much more
space than your proposal.
Various helper function could make the code more compact, and even
clearer than your proposal:
d = {}
add_maybe(d, val_1, "field_1")
add_maybe(d, val_2, "next_depth", "field_2")
Of course, you might prefer a different API. That's an advantage of
helper functions: you can design them to suit your exact needs.
--Ned.
_______________________________________________
Python-ideas mailing list
Python-ideas@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/