[英]Nested dictionary comprehension python
我无法理解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()}
此示例应返回原始字典,但内部值由myfunc
修改。
outer_dict字典的结构,以及结果:
{outer_k: {inner_k: inner_v, ...}, ...}
{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()}
为了便于阅读,不要过多地嵌套字典理解和列表推导。
添加一些换行符和缩进:
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()
}
...显然你实际上有一个单一的,“二维”的词典理解。 你真正想要的可能是:
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()
}
(这正是Blender在他的回答中建议的,添加了空格)。
{ok: {ik: myfunc(iv) for ik, iv in ov.items()} for ok, ov in od.items()}
哪里
好的外键
ik-inner key
ov-外值
iv-inner value od-outer词典这就是我记忆的方式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.