首页 > 解决方案 > 字典理解中是否允许使用 lambda?

问题描述

我有以下内容:

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

当我期望结果是'A'.

注意

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

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

标签: pythonpython-3.5

解决方案


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值。


推荐阅读