python的lambda字典

时间:2015-06-09 11:22:42

标签: python lambda

我制作了一个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循环中实现呢?

0 个答案:

没有答案