【问题标题】:python: the form of key in heaps.nsmallest [duplicate]python:heaps.nsmallest中键的形式[重复]
【发布时间】:2017-08-09 23:07:00
【问题描述】:

当我学习python cookbook的时候,有一个问题让我很困惑:

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怎么办?

【问题讨论】:

    标签: python python-3.x


    【解决方案1】:

    嗯,实际上,s 定义的,只是不是以您习惯定义事物的方式。仔细看看这个表达式:

    key=lambda s: s['price']
    

    如您所见,s 是在lambda 之后定义的,在lambda s: 部分中。一个不起作用的表达式是:

    key=lambda s: a['price']
    

    如您所见,现在a 未定义。你只需要明白heapq.nsmallest这个函数接受了三个参数,最后一个是一个函数(这里是一个lambda函数),在这个例子中,接受一个字典并获取一个特定的键。

    【讨论】:

    • 非常感谢!这是有道理的
    猜你喜欢
    • 1970-01-01
    • 2018-06-07
    • 2017-11-15
    • 1970-01-01
    • 1970-01-01
    • 2013-09-25
    • 1970-01-01
    • 2018-02-07
    • 1970-01-01
    相关资源
    最近更新 更多