元组在lambda函数中解压缩

时间:2018-02-09 07:40:16

标签: python-3.x lambda tuples

我应该如何重写这个lambda以符合Python3标准?

top10_popular = [k for (k, (v1, v2)) in sorted(site_freq_150users.items(),
                                           key=lambda (k, (v1, v2)): v2, reverse=True)[:10]

我已经读到这与删除Python3中的元组解包有关,但现在我确定如何正确地重写它。

提前致谢。

1 个答案:

答案 0 :(得分:0)

通过直接命名所有顶级参数,只需使参数列表变平(即1维),而无需解压缩它们。稍后在返回表达式中解压缩。

在您的示例中,您可以通过说v = (v1, v2)然后像这样创建lambda来执行此操作:

lambda k, v : v[1]

更新:以上无效。相反,您必须将整个项目放入参数中,然后从中提取键和值:

lambda item : item[1][1]