Is it possible to have a dictionary or set comprehension inside of an f-string in python 3.6+?
It seems syntactically impossible:
names = ['a', 'b', 'c']
pks = [1, 2, 3]
f"{{name : pk for name, pk in zip(names, pks)}}"
This will return:
{name : pk for name, pk in zip(names, pks)}
This is expected behavior, double brackets result in literal brackets in the output as the expression isn't evaluated.
Has anyone found a workaround to allow for dictionary/set comprehensions inside of f-strings?
Add spaces, they are syntactically required and won’t appear in the resulting string:
names = ['a', 'b', 'c']
pks = [1, 2, 3]
f"{ {name: pk for name, pk in zip(names, pks)} }"
# ▲ ▲
# │ │
# ╰───────────────See the spaces?────────────╯
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With