syntax – Nested dictionary comprehension python
syntax – Nested dictionary comprehension python
{inner_k: myfunc(inner_v)}
isnt a dictionary comprehension. Its just a dictionary.
Youre probably looking for something like this instead:
data = {outer_k: {inner_k: myfunc(inner_v) for inner_k, inner_v in outer_v.items()} for outer_k, outer_v in outer_dict.items()}
For the sake of readability, dont nest dictionary comprehensions and list comprehensions too much.
Adding some line-breaks and indentation:
data = {
outer_k: {inner_k: myfunc(inner_v)}
for outer_k, outer_v in outer_dict.items()
for inner_k, inner_v in outer_v.items()
}
… makes it obvious that you actually have a single, 2-dimensional dict comprehension. What you actually want is probably:
data = {
outer_k: {
inner_k: myfunc(inner_v)
for inner_k, inner_v in outer_v.items()
}
for outer_k, outer_v in outer_dict.items()
}
(which is exactly what Blender suggested in his answer, with added whitespace).
syntax – Nested dictionary comprehension python
{ok: {ik: myfunc(iv) for ik, iv in ov.items()} for ok, ov in od.items()}
where
ok-outer key
ik-inner key
ov-outer value
iv-inner value
od-outer dictionary
This is how i remember.