Dict理解,元组和懒惰的评价

tch*_*rty 0 python dictionary functional-programming python-3.x

我试图看看我是否可以在Python中实现一些非常懒惰的东西.

我有一个字典理解,其中值是一个元组.我希望能够通过使用元组的第一个条目来创建元组的第二个条目.

一个例子应该有帮助.

dictA = {'a': 1, 'b': 3, 'c': 42}
{key: (a = someComplexFunction(value), moreComplexFunction(a)) for key, value in dictA.items()}
Run Code Online (Sandbox Code Playgroud)

是否有可能moreComplexFunction在元组的第一个条目中使用计算?

Mar*_*ers 7

您可以在单元素元组上添加第二个循环:

{key: (a, moreComplexFuntion(a)) for key, value in dictA.items() 
                                 for a in (someComplexFunction(value),)}
Run Code Online (Sandbox Code Playgroud)

这使您可以访问someComplexFunction(value)值表达式中的输出,但这相当丑陋.

就个人而言,我会在这种情况下转向常规循环:

dictB = {}
for key, value in dictA.items():
    a = someComplexFunction(value)
    dictB[key] = (a, moreComplexFunction(a))
Run Code Online (Sandbox Code Playgroud)

并完成它.