簡體   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