【发布时间】:2017-07-18 09:36:31
【问题描述】:
Python 新手在这里学习字典理解。考虑以下示例字典,该字典具有进一步的字典作为其值(它们是否称为“多维字典”?只是想知道。):
maindictionary = {
'key1':{'key11':'value11','key12':'value12'},
'key2':{'key21':'value21','key22':'value22'},
'key3':{'key31':'value31','key32':'value32'},
'key4':{'key41':'value41','key42':'value42'}
}
我想在产生结果的字典理解中的函数中遍历主字典,然后可以在另一个函数的循环中使用该结果。算法如下:
遍历字典,并将每个键的值发送到
functionA,除非 key 等于 key3 或 key4。从
functionA获取结果并将其传递给functionB- 进入下一次迭代。
functionA 也返回一个字典。 functionB 只是打印出结果。
我有一个模糊的想法,它看起来类似于下面的代码,这是我迄今为止测试过的,它给出了语法错误:
{result:functionA(v) for (k,v) in maindictionary if (k != 'key3' or k != 'key4')}
functionB(result)
我在这里的语法可能完全错了,所以如果你能指出一个好的字典理解资源(不是官方的 python 文档,它们对于初学者来说很难理解),那就太好了!
编辑:
functionA 的输出将创建两个字典,{'key11':'value11'} 和 {'key21':'value21'}(每次迭代)。然后将这些输入functionB,输出value11,然后输出value21(每次迭代)。
我想使用来自functionA 的结果,即输入到functionB 的字典,然后检索它的值。
【问题讨论】:
-
你说你想要一个字典理解,但是字典的键和值是什么?如果我正确理解了这个问题,值应该是
functionB(functionA(v)),但是键是什么? -
使用了
dict-comprehension,因为它创建了dicts。 Ofc 你可以在字典理解中运行函数,但是你想将结果存储在dict中吗?如果不只是循环。result是什么? -
您不能将字典用作字典键。如果您包含
functionA和functionB的实现以及您想要的结果/输出,可能会更容易理解这个问题。 -
除了创建数据结构之外,不要使用理解来做其他事情。听起来你想要一个循环。
-
@omrakhur 我担心你试图以错误的方式 Pythonic 并最终困惑并编写糟糕的代码我>。只是循环。
标签: python python-3.x dictionary dictionary-comprehension