寻找更好的 python 语法将多个参数传递给单参数化的 lambda

Looking for a nicer python syntax to pass multiple parameters to a single-parameterized lambda

让我们以这段代码为例(按值对字典项进行排序):

sorted(d.items(), key=lambda kv: kv[1])

将 key 定义为单参数仿函数决定了这个丑陋的 lambda。

现在,在 this book 中,我看到了一些使用更好语法的示例,例如:

sorted(d.items(), key=lambda (k,v): v)

但是,不幸的是,这给了我一个语法错误(在 python 3.4 下)。

有这样的语法吗?在哪个版本中?

不幸的是removed in Python3

:-(

我们的想法是这会阻碍内省。与其弄清楚签名如何调用函数,不如分析字节码(不是语法树)。

该功能已在 Python3 PEP3113 中删除。

据我所知,lambda 案例没有解决方法。您可以执行以下操作:

def f_unpack(f):
   def unpacking(args):
       return f(*args)
   return unpacking

然后使用f_unpack(lambda k, v: v)。 (而且您必须为 f_unpack.

找到一个更具描述性的简称

完全替换 lambda 是 operator.itemgetter:

的用例
sorted(d.items(), key=operator.itemgetter(1))