在字典中存储lambdas

时间:2013-01-19 23:15:21

标签: python dictionary lambda

我一直在尝试为每个键创建一个包含字符串的字典,并为每个值创建一个lambda函数。我不知道我哪里出错了,但我怀疑这是我首先尝试将lambda存储在字典中,还是我的lambda正在使用快捷操作符。

代码:

dict = {
    'Applied_poison_rating_bonus': 
        (lambda target, magnitude: target.equipmentPoisonRatingBonus += magnitude)
}

引发的错误是SyntaxError: invalid syntax,并指向我的+=。在lambdas中不允许使用快捷操作符,还是我比我想象的更偏离轨道?

为了理智,我省略了数百个非常相似的对(它不仅仅是一个小字典。)

编辑:

似乎我的问题是尝试在lambda表达式中分配任何。但是,我要解决的问题是如何才能获得一个只知道这个字典的密钥才能改变我(破碎)代码中定义的字段的方法?

某种方式调用eval()有帮助吗?

EDIT_FINAL:

这个问题的扩展部分建议使用functools.partial()方法,我相信在研究之后,我会发现它足以解决我的问题。

1 个答案:

答案 0 :(得分:32)

您不能在表达式中使用赋值,而lambda只能使用表达式。

你可以将lambdas存储在词典中,否则就可以了:

dict = {'Applied_poison_rating_bonus' : (lambda target, magnitude: target.equipmentPoisonRatingBonus + magnitude)}

上述lambda当然只返回结果,不会就地target.equimentPoisonRatingBonus进行更改。