Tur*_*ute 24 python syntax nested list-comprehension dictionary-comprehension
我无法理解Python 3中的嵌套字典理解.我从下面的示例中得到的结果输出正确的结构而没有错误,但只包含一个内部键:值对.我没有找到这样的嵌套字典理解的例子; 谷歌搜索"嵌套字典理解python"显示遗留示例,非嵌套理解,或使用不同方法解决的答案.我可能使用了错误的语法.
例:
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()}
Run Code Online (Sandbox Code Playgroud)
此示例应返回原始字典,但内部值已修改myfunc.
outer_dict字典的结构,以及结果:
{outer_k: {inner_k: inner_v, ...}, ...}
Run Code Online (Sandbox Code Playgroud)
Ble*_*der 30
{inner_k: myfunc(inner_v)}不是字典理解.这只是一本字典.
你可能正在寻找这样的东西:
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()}
Run Code Online (Sandbox Code Playgroud)
为了便于阅读,不要过多地嵌套字典理解和列表推导.
Zer*_*eus 28
添加一些换行符和缩进:
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()
}
Run Code Online (Sandbox Code Playgroud)
...显然你实际上有一个单一的,"二维"的词典理解.你真正想要的可能是:
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()
}
Run Code Online (Sandbox Code Playgroud)
(这正是Blender在他的回答中建议的,添加了空格).
{ok: {ik: myfunc(iv) for ik, iv in ov.items()} for ok, ov in od.items()}
Run Code Online (Sandbox Code Playgroud)
其中
ok-outer key
ik-inner key
ov-outer value
iv-inner value od-outer 字典 这就是我记得的。