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
}
}
```
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
}
}
```
Where each conditional in this context functions as:
```
if value:
d["your_key"] = value
```
for each conditionally added and set key.
From the slack channel #learning_python, there are a number of more general points which need to be handled. The more core syntax, which should be valid throughout the language, would be to have statements like `x = y if cond` and `x[y if cond]`. The first of these intuitively reorganizes to `if cond: x = y`, but the second is not as clear, with a likely equivalent of `if cond: x[y] else raise Exception`.
Thanks to Tom Forbes and Jim Kelly for helping critique the idea thus far.