복붙노트

[PYTHON] 파이썬 3.2 람다 구문 오류 [중복]

PYTHON

파이썬 3.2 람다 구문 오류 [중복]

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} 목록 순서로 요소를 나열하여 목록을 생성하도록하고 싶습니다. 사전의 값에 따라 Largest에서 Smallest까지, 그 다음에 알파벳순으로 키로 표시됩니다.

이 함수는 python 2.7.2로 실행하면 정상적으로 작동하지만 오류가 발생합니다.

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

파이썬 3.2.3으로 프로그램을 실행할 때. 나는 왜, 또는 2.7과 3.2 사이의 구문 차이가 있는지, 그리고 아무 것도 생각 해 내지 못했던 이유를 계속해서 조사해 왔습니다. 어떤 도움이나 수정 사항도 대단히 감사하겠습니다.

해결법

  1. ==============================

    1.괄호를 사용하여 람다에서 인수를 푸는 것은 Python3에서 허용되지 않습니다. 이유는 PEP 3113을 참조하십시오.

    괄호를 사용하여 람다에서 인수를 푸는 것은 Python3에서 허용되지 않습니다. 이유는 PEP 3113을 참조하십시오.

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

    대신 다음을 사용하십시오.

    lambda kv: (-kv[1], kv[0])
    
  2. from https://stackoverflow.com/questions/15712210/python-3-2-lambda-syntax-error by cc-by-sa and MIT license