python - 为什么 lambda 函数中的括号会导致 Python 3 上的语法错误?

标签 python python-3.x lambda syntax-error

def sort_dictionary( wordDict ):
    sortedList = []
    for entry in sorted(wordDict.iteritems(), key = lambda (k, v): (-v, k) ):
        sortedList.append( entry )

    return sortedList

该函数将接收包含以下信息的字典:

{ 'this': 1, 'is': 1, 'a': 1, 'large': 2, 'sentence': 1 }

我想让它生成一个列表列表,其中元素首先按字典的值从大到小排序,然后按字母顺序排列。

该函数在使用 python 2.7.2 运行时工作正常,但我收到错误:

  File "frequency.py", line 87
    for entry in sorted(wordDict.iteritems(), key = lambda (k, v): (-v, k)):
                                                           ^
SyntaxError: invalid syntax

当我使用 python 3.2.3 运行程序时。

我一直在寻找原因,或者 2.7 和 3.2 之间的语法差异,但一无所获。任何帮助或修复将不胜感激。

最佳答案

在 Python3 中不允许使用括号解包 lambda 中的参数。见 PEP 3113原因。

lambda (k, v): (-v, k)

改为使用:

lambda kv: (-kv[1], kv[0])

关于python - 为什么 lambda 函数中的括号会导致 Python 3 上的语法错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15712210/

相关文章:

python - 绘制网格线但隐藏轴

python - 如何在 Google App Engine 中获得我的一个模型的独特值(value)

python - Sentry中使用captureMessage时,如何选择不归类为error的类型?

python - 带有 Python 3.3 的蓝牙服务器

python - 使用 lambda 在回调中设置属性

python - 如何使用 Python 检索当前 Windows 用户(AD 或本地)的名称?

Python:有没有更有效的方法来重复检查鼠标?

python-3.x - Bokeh 数据表重新排序列

amazon-web-services - CloudFormation 自定义资源响应键

c# - 在 Nancy Lambda Capture 中捕获 'this'