我们以此代码为例(按值排序dict项目):
sorted(d.items(), key=lambda kv: kv[1])
key作为单参数仿函数的定义决定了这个丑陋的lambda。
现在,在this book中,我看到一些使用更好语法的示例,例如:
sorted(d.items(), key=lambda (k,v): v)
但是,不幸的是,这给了我一个语法错误(在python 3.4下)。
这种语法是否存在?在哪个版本?
答案 0 :(得分:4)
答案 1 :(得分:3)
完全替换lambda是operator.itemgetter
的用例:
sorted(d.items(), key=operator.itemgetter(1))
答案 2 :(得分:2)
该功能已在Python3 PEP3113中删除。
据我所知,lambda
案例没有解决方法。您可以执行以下操作:
def f_unpack(f):
def unpacking(args):
return f(*args)
return unpacking
然后使用f_unpack(lambda k, v: v)
。 (并且您必须为f_unpack
找到更具描述性的简称。