2017-08-09 39 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

非常感謝你!這就說得通了 –