2017-08-09 56 views
1

当我学习蟒蛇菜谱,还有提出了一个问题,百思不得其解:蟒蛇:关键的形式heaps.nsmallest

portfolio = [ 
     {'name': 'IBM', 'shares': 100, 'price': 91.1}, 
     {'name': 'AAPL', 'shares': 50, 'price': 543.22}, 
     {'name': 'FB', 'shares': 200, 'price': 21.09}, 
     {'name': 'HPQ', 'shares': 35, 'price': 31.75}, 
     {'name': 'YHOO', 'shares': 45, 'price': 16.35}, 
     {'name': 'ACME', 'shares': 75, 'price': 115.65} 
] 

    cheap = heapq.nsmallest(3, portfolio, key=lambda s: s['price']) 

这里我们可以看到“s”没有定义,但它怎么能工作?如果我不想使用lambda,我应该怎么做?

回答

0

那么,实际上,s定义的,只是不是你用来定义事物的方式。仔细看这个expresion:

key=lambda s: s['price'] 

正如你所看到的,是slambda定义你,在部分lambda s:。这是行不通的表达式是:

key=lambda s: a['price'] 

,你可以看到,现在没有定义a。你只需要明白功能heapq.nsmallest有三个参数,最后一个是一个函数(在本例中是一个lambda函数),在这种情况下,需要一个字典并获得一个特定的键。

+0

非常感谢你!这就说得通了 –