我有以下内容:
>>> {c: (lambda: c) for c in ["A","B"]}["A"]()
'B'
当我希望结果为'A'
时。
请注意
>>> {c: c for c in ["A","B"]}["A"]
'A'
字典理解中是不允许使用lambdas还是我搞砸了语法?
答案 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
个值。