On 2019-04-26 16:56, Sebastian Kreft wrote:
On Fri, Apr 26, 2019 at 11:07 AM Joshua Marshall <j.marsh...@arroyo.io
<mailto:j.marsh...@arroyo.io>> 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
}
}
```
If val_2 here evaluates to falsey, will next_depth still be defined?
From the code I would say that no. But your use case may require to not
define the next_depth subdict without any values, as that may break the
receiver expectations (think of JSON Schema).
From the code I would say yes. If you didn't want the subdict, you
would've written:
def my_func(val_1, val_2):
return {
"field_1": val_1 if val_1,
"next_depth": {
"field_2": val_2
} if val_2
}
Or:
```
def my_func(val_1, val_2):
return {
if val_1 : "field_1": val_1,
"next_depth": {
if val_2: "field_2": val_2
}
}
```
def my_func(val_1, val_2):
return {
if val_1 : "field_1": val_1,
if val_2: "next_depth": {
"field_2": val_2
}
}
[snip]
The first form is too easily confused with the ternary 'if'.
In Python, an expression never starts with an 'if', so the second form
would be a better syntax for an optional entry.
_______________________________________________
Python-ideas mailing list
Python-ideas@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/