stocks ={
'BMW':40 ,
'FB': 90 ,
'whatsapp':100,
'Apple':30
}
print("lowest stock is : " , min(stocks ,key =lambda x:stocks[x]) )
这段代码有效但我需要知道lambdas如何在这个上下文中工作我知道它接受一个参数然后返回结果,这是表达式,所以我的问题是在这个例子中lambda采用'x'的参数是什么,并且这样做参数也改变了。我的意思是min函数在运行时会改变它。所以当第一次调用min时,x.thanks的值是提前的。
来自https://www.programiz.com/python-programming/methods/built-in/min:
调用min(stocks, key= lambda x:stocks[x])
调用stocks
中的最小元素,通过比较函数lambda x:stocks[x]
的结果,这只是一个匿名函数,它返回给定键的股票值。因此,对min
的调用会返回最小值的股票。
另见Get the key corresponding to the minimum value within a dictionary和http://www.aroseartist.com/python-dictionary-max-min/
你的min()函数得到一个可迭代的第一个参数(在这种情况下'stock'dict)。
第二个参数,即'key = lambda x:stocks [x]',是一个根据应评估的最小值来指定的函数。
基本上x取以下值('BMW''FB''whatsapp''Apple')和lambda函数返回值(40 90 100 30)。 30是最低值,因此你的min()函数将返回该值的'key',即'Apple'(不要与'key'混淆,'key'是min()函数中的参数)