在sorted函数中使用lambda作为key出现语法错误,求解决方法
sorted函数中lambda作为key参数的语法错误解决
错误原因
你代码里的lambda(word,count):count是Python 2的写法,Python 3已经移除了元组参数拆包的语法,直接这样写会触发语法错误。Python 3要求lambda的参数必须是单个变量,不能在参数位置直接对元组进行拆包。
另外注意你定义了列表x但未使用,实际调用sorted时依赖的word_counts如果未定义也会报错,但当前触发的语法错误核心是lambda的写法问题。
解决办法
有两种简洁的修正方式:
- 方式一:让lambda接收单个参数,通过索引访问元组的第二个元素(最常用)
sorted(word_counts.items(), key=lambda item: item[1], reverse=True) - 方式二:在lambda内部手动完成参数拆包(Python 3.1+支持)
sorted(word_counts.items(), key=lambda item: (lambda word, count: count)(*item), reverse=True)
完整可运行示例
假设word_counts是一个统计词频的字典:
word_counts = {"apple": 5, "banana": 2, "cherry": 8} sorted_items = sorted(word_counts.items(), key=lambda item: item[1], reverse=True) print(sorted_items) # 输出: [('cherry', 8), ('apple', 5), ('banana', 2)]
内容的提问来源于stack exchange,提问作者keibod nouripour
相关产品推荐
相关产品推荐

