为了账号安全,请及时绑定邮箱和手机立即绑定

类属性中的 Lambda 函数

类属性中的 Lambda 函数

繁星coding 2021-09-14 17:27:33
任务:获取price在self.priceTable给定reqId的输入。类方法的此代码确实按预期工作:priceTable = self.priceTableprice = next(filter(lambda priceTable: priceTable['reqId'] == reqId, priceTable), None)此代码给出了无效的语法错误:price = next(filter(lambda self.priceTable: self.priceTable['reqId'] == reqId, self.priceTable), None)那有什么问题?任何替代建议?
查看完整描述

3 回答

?
慕侠2389804

TA贡献1719条经验 获得超6个赞

lambda后面必须跟一个普通变量,就像函数的参数一样。您只需要self.priceTable在参数中提供filter

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


查看完整回答
反对 回复 2021-09-14
?
慕妹3242003

TA贡献1824条经验 获得超6个赞

self.priceTable不是有效的参数名称。参数应该只是名称,您可以将self.priceTable其作为参数传递给 lambda 函数:

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



查看完整回答
反对 回复 2021-09-14
?
慕运维8079593

TA贡献1876条经验 获得超5个赞

您的问题不清楚,因为其中的代码太少,无法真正理解您要完成的任务——如果这不适用,那么抱歉。但是,从目前的情况来看,我认为您根本不需要使用 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.34

print(inst.get_price('id9'))  # -> None


查看完整回答
反对 回复 2021-09-14
  • 3 回答
  • 0 关注
  • 219 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信