Issue
def sort_dictionary( wordDict ):
sortedList = []
for entry in sorted(wordDict.iteritems(), key = lambda (k, v): (-v, k) ):
sortedList.append( entry )
return sortedList
The function would be receiving a dictionary containing information such as:
{ 'this': 1, 'is': 1, 'a': 1, 'large': 2, 'sentence': 1 }
I would like to have it generate a list of lists, with the elements ordered first by the dictionary's values from largest to smallest, then by the keys alphabetically.
The function works fine when run with python 2.7.2, but I receive the error:
File "frequency.py", line 87
for entry in sorted(wordDict.iteritems(), key = lambda (k, v): (-v, k)):
^
SyntaxError: invalid syntax
when I run the program with python 3.2.3.
I have been searching all over for a reason why, or syntax differences between 2.7 and 3.2, and have come up with nothing. Any help or fixes would be greatly appreciated.
Solution
Using parentheses to unpack the arguments in a lambda is not allowed in Python3. See PEP 3113 for the reason why.
lambda (k, v): (-v, k)
Instead use:
lambda kv: (-kv[1], kv[0])
Answered By - unutbu Answer Checked By - Mary Flores (PHPFixing Volunteer)
0 Comments:
Post a Comment
Note: Only a member of this blog may post a comment.