python:heaps.nsmallest中键的形式
当我学习python食谱时,有一个问题让我非常困惑:python:heaps.nsmallest中键的形式,python,python-3.x,Python,Python 3.x,当我学习python食谱时,有一个问题让我非常困惑: 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':
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,我该怎么办?事实上,
s
是定义好的,只是不是用你定义事物的方式。请仔细查看此表达式:
key=lambda s: s['price']
如您所见,s
是在lambda
之后定义的,在lambda s:
部分。一个不起作用的表达式是:
key=lambda s: a['price']
如您所见,现在未定义
a
。您只需了解函数heapq.nsmallest
包含三个参数,最后一个参数是函数(在本例中是lambda函数),在本例中,它包含一个字典并获得一个特定的键。事实上,s
是定义的,只是不是以您用来定义事物的方式定义的。请仔细查看此表达式:
key=lambda s: s['price']
如您所见,s
是在lambda
之后定义的,在lambda s:
部分。一个不起作用的表达式是:
key=lambda s: a['price']
如您所见,现在未定义
a
。您只需了解函数heapq.nsmallest
需要三个参数,最后一个参数是函数(在本例中是lambda函数),在本例中,需要一个字典并获得一个特定的键。非常感谢!这让我觉得非常感谢你!这是有道理的