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