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/