首页 > 解决方案 > lambda 函数返回函数名

问题描述

我有一个列表,其中的项目是字典。字典值采用 unicode 格式,我正在尝试将 unicode 值与字符串进行比较。所以,我尝试了一个下面的 lambda 函数,期望将 unicode 转换为字符串;

a=[(lambda x: x.unicode('UTF-8') ) for i in paid_submissions[0].values()]

print(a)

[在 0x11335db18>,在 0x113357d70>,在 0x113357b90>,在 0x113357a28>,在 0x1133b5050>,在 0x1133b50c8>]

标签: pythonlambda

解决方案


因为您只是返回 lambda 对象,而没有在任何东西上调用它。如果我了解您要正确执行的操作,则需要i像这样调用 lambda。

a = [(lambda x: x.unicode('UTF-8'))(i) for i in paid_submissions[0].values()]

但是lambda表达方式很浪费。这可以更容易(也更有效)写成

a = [i.unicode('UTF-8') for i in paid_submissions[0].values()]

推荐阅读