Python 3.2 Lambda语法错误

时间:2013-03-29 22:11:19

标签: python 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,'是':1,'a':1,'大':2,'句子':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之间的语法差异,并且没有提出任何结果。任何帮助或修复将不胜感激。

1 个答案:

答案 0 :(得分:41)

在Python3中不允许使用括号来解压缩lambda中的参数。请参阅PEP 3113了解原因。

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

改为使用:

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