2017-08-09 3 views
1

私はPythonの料理を勉強するとき、そこに質問が本当に私をパズル提起:のpython:におけるキーの形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」を見ることができますが定義されていませんが、どのようにそれができます作業?ラムダを使いたくない場合はどうすればいいですか?

答えて

0

実際には、sと定義されています。定義するのはあなたのものではありません。このexpresionに近い見て:

key=lambda s: s['price'] 

あなたが見ることができるように、sは一部lambda s:で、lambda後にあなたを定義しています。動作しません式は次のようになります。あなたが見ることができるよう

key=lambda s: a['price'] 

、今aが定義されていません。関数heapq.nsmallestは3つのパラメータをとり、最後は関数(この場合はラムダ関数)であり、この場合は辞書をとり、特定のキーを取得するということだけを理解する必要があります。

+0

ありがとうございます!それは理にかなっている –

関連する問題