파이썬 초보 문법질문이요..

조회수 1718회
if ch in digits:
            return {
                0: {k1or4: 1 if k1or4 in digits else 4 for k1or4 in digits+letters},
                1: {k1: 1 for k1 in digits},
            }[aa][ch]

Dictionary 표현은 알겠는데, 뒤에 if, for 을 어떻게 해석해야 하는건지 모르겠습니다..

그리고 return { }[ ][ ] 이건 무슨 표현인가요??

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • 위의 코드는 다음과 같이 생각하실 수 있습니다.

    # 리턴시에 생성하지 않고, 미리 생성 -- 풀어썼을 경우.
    d = {0: {}, 1: {}}
    
    for k1or4 in digits+letters:
      if k1or4 in digits:
        d[0][k1or4] = 1
      else:
        d[0][k1or4] = 4
    
    for k1 in digits:
      d[1][k1] = 1
    
    if ch in digits:
      return d[aa][ch]
    

    질문하신 표현은 그냥 return할때 해당 dictionary를 만든 후에 aach 변수값에 따른 결과값을 가져오는 표현입니다. (위의 코드 마지막줄 참고)

    앞뒤 코드가 없이는 정확히 말하기 어렵지만.. 일단 aa 변수는 0이나 1의 값을 가질 수 있고 ch의 값에 따라 d[aa] dictionary안의 값을 가져오네요. 한가지 의아한점은 이 코드만 가지고 보면 리턴값은 항상 1일것 같네요(?). aa가 0일때나 1일때나 chdigits 안에 존재하는 값이라면 항상 1의 값을 가지고 있기 때문이죠.

    • (•́ ✖ •̀)
      알 수 없는 사용자
    • Wow! 바로 이해됐네요. 코드는 과제로 제공받은것 중 일부라서, 변수이름이랑 앞뒤 코드 잘라서 올렸습니다^^; 문법만 질문 드리고 싶어서.. 채택하고 갑니다 감사감사 알 수 없는 사용자 2016.4.1 13:23

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)