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では許可されていません。理由は PEP 311 を参照してください。
lambda (k, v): (-v, k)
代わりに次を使用します:
lambda kv: (-kv[1], kv[0])