Python 将lambda函数用作dict值时发生奇怪的覆盖

Python 将lambda函数用作dict值时发生奇怪的覆盖,python,numpy,lambda,Python,Numpy,Lambda,我试图创建一个包含几个lambda函数的dict。lambda函数是numpy百分位函数。然而,我得到了奇怪的结果,好像所有的lambda函数都包含np.percentile(x,q=100) 印刷生产: {'50_perc': <function <lambda> at 0x2cb7b90>, '70_perc': <function <lambda> at 0x2cb77d0>, '40_perc': <function <lamb

我试图创建一个包含几个lambda函数的dict。lambda函数是numpy百分位函数。然而,我得到了奇怪的结果,好像所有的lambda函数都包含np.percentile(x,q=100)

印刷生产:

{'50_perc': <function <lambda> at 0x2cb7b90>, '70_perc': <function <lambda> at 0x2cb77d0>, '40_perc': <function <lambda> at 0x2cb75f0>, '10_perc': <function <lambda> at 0x2cb7cf8>, '30_perc': <function <lambda> at 0x2cb7500>, '0_perc': <function <lambda> at 0x2cb7aa0>, '80_perc': <function <lambda> at 0x2cb78c0>, '20_perc': <function <lambda> at 0x2cb7a28>, '100_perc': <function <lambda> at 0x2cb7848>, '90_perc': <function <lambda> at 0x2cb7758>, '60_perc': <function <lambda> at 0x2cb7d70>}
5
5
5
{'50_perc':,'70_perc','40_perc','10_perc','30_perc','0_perc','80_perc','20_perc','100_perc','90_perc','60_perc':}
5.
5.
5.
就像所有lambda函数都被后续函数覆盖一样…

找到了解决方案:

一些我不太理解的后期绑定的东西。无论如何

def returnLambda(i):
    return lambda x: np.percentile(x,i)

for i in xrange(0,101,10): 
    d[str(i)+'_perc'] = returnLambda(i)
    print(i)
这是一个很好的答案
def returnLambda(i):
    return lambda x: np.percentile(x,i)

for i in xrange(0,101,10): 
    d[str(i)+'_perc'] = returnLambda(i)
    print(i)