我制作了一个lambdas的python字典:
d['a'] = lambda x: x.count('a')
d['b'] = lambda x: x.count('b')
d['c'] = lambda x: x.count('c')
对于字典的每个键('a', 'b', 'c')
,lambda函数接收一个参数并计算特定字母出现的次数。
这非常有效。
问题是当我尝试使用字典理解时...
lst = ['a', 'b', 'c']
d = {k: lambda x: x.count(k) for k in lst}
......甚至还有一个简单的for循环:
for i in lst:
d[i] = lambda x: x.count(i)
代码运行,但是当我尝试调用特定的lambda时,例如:
print(d['a']('apple'))
似乎所有的lambda都会计算'c'
字母出现(!)而不是其他字母的次数。
有人可以解释一下为什么吗?
我们怎样才能在for循环中实现呢?