任务:获取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)
慕妹3242003
TA贡献1824条经验 获得超6个赞
self.priceTable
不是有效的参数名称。参数应该只是名称,您可以将self.priceTable
其作为参数传递给 lambda 函数:
price = next(filter(lambda priceTable: priceTable['reqId'] == reqId, self.priceTable), None)
慕运维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
添加回答
举报
0/150
提交
取消