字典理解中是否允许使用lambdas?

时间:2018-06-12 08:40:42

标签: python python-3.5

我有以下内容:

>>> {c: (lambda: c) for c in ["A","B"]}["A"]()
'B'

当我希望结果为'A'时。

请注意

>>> {c: c for c in ["A","B"]}["A"]
'A'

字典理解中是不允许使用lambdas还是我搞砸了语法?

1 个答案:

答案 0 :(得分:1)

lambda创建了一个对象,并且在理解的每个元素中修改了它捕获的值

就像你做的一样

class Lambda:
    def set(self, value):
        self.value = value;
        return self
    def __call__(self):
        return value

lam = Lambda()
{c: lam.set(c) for c in ["A","B"]}["A"]()

字典中的每个条目都具有相同的值lam,它返回最后set个值。