类属性中的 Lambda 函数

任务:获取price在self.priceTable给定reqId的输入。


类方法的此代码确实按预期工作:


priceTable = self.priceTable

price = next(filter(lambda priceTable: priceTable['reqId'] == reqId, priceTable), None)

此代码给出了无效的语法错误:


price = next(filter(lambda self.priceTable: self.priceTable['reqId'] == reqId, self.priceTable), None)

那有什么问题?任何替代建议?


繁星coding
浏览 220回答 3
3回答

慕侠2389804

lambda后面必须跟一个普通变量,就像函数的参数一样。您只需要self.priceTable在参数中提供filter:price = next(filter(lambda p: p['reqId'] == reqId, self.priceTable), None)

慕妹3242003

self.priceTable不是有效的参数名称。参数应该只是名称,您可以将self.priceTable其作为参数传递给 lambda 函数:price = next(filter(lambda priceTable: priceTable['reqId'] == reqId, self.priceTable), None)

慕运维8079593

您的问题不清楚,因为其中的代码太少,无法真正理解您要完成的任务——如果这不适用,那么抱歉。但是,从目前的情况来看,我认为您根本不需要使用 alambda或内置filter函数来完成任务。相反,您可以使用现有的字典方法get(),如下所示:class Class:    def __init__(self, **kwargs):        self.priceTable = kwargs.copy()    def get_price(self, reqId):        return self.priceTable.get(reqId, None)inst = Class(id1=1.23, id2=2.34, id3=3.56)print(inst.get_price('id2'))  # -> 2.34print(inst.get_price('id9'))  # -> None
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python