繁体   English   中英

嵌套字典理解python

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM