dictionary호출 도중 KeyError : 3

조회수 296회

현재 포맷팅에 대해 공부하고 있습니다.

x = [10, 11, 12]
x1=[13,14,15]
"리스트의 첫번째 원소={0[0]}".format(x)

y = {"a": 10, "b": 11, "c": 12}
"사전의 a키 값={0[a]}".format(y)
"사전의 a키 값={1[a]},{0[2]}".format(x,y) # y의 a , x의 2번째 
#주의할 점 : 1[a]지 1['a']가 아니다. 1['a']로 할 경우에는 KeyError남.
"사전의 a키 값={1[0]},{0[1]}".format(x,x1) #x1의 0번째, x의 1번째 순서

y['a']#신기한 건 여기선 또 'a'를 써야하고 그냥 a를 쓸 경우 Key Error가 뜬다는 것...

이렇게 공부 도중 궁금한 점이 두가지가 생겼습니다.

사전의 a키 값={1[a]},{0[2]}".format(x,y) 

1. 이 부분에서 딕셔너리의 키인 a에 왜 따옴표를 붙이지 않나요?


x = [10, 11, 12]
x1=[13,14,15]
"리스트의 첫번째 원소={0[0]}".format(x)

y = {"a": 10, "b": 11, "c": 12}
"사전의 a키 값={0[a]}".format(y)
"사전의 a키 값={1[a]},{0[2]}".format(x,y) # y의 a , x의 2번째 
#주의할 점 : 1[a]지 1['a']가 아니다. 1['a']로 할 경우에는 KeyError남.
"사전의 a키 값={1[0]},{0[1]}".format(x,x1) #x1의 0번째, x의 1번째 순서

y[a]#신기한 건 여기선 또 'a'를 써야하고 그냥 a를 쓸 경우 Key Error가 뜬다는 것...

다음과 같이 제일 마지막 줄인 y['a']를 y[a]로 실행할 경우

KeyError : 3

이 뜹니다. 2. 왜 여기선 따옴표를 안 붙이는지와 KeyError : 3이 뜨는 이유가 궁금합니다. 찾아봐도 3과 관련될만한건 없는거같은데 왜 하필 3인지 모르겠습니다.

이렇게 두가지의 질문에 답변해주시면 정말 감사하겠습니다!

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    1에 대한 답변

    str.format 파서의 특성인 것 같습니다. 일반 파이썬 코드라면, 딕셔너리 변수의 문자열 키에 접근하기 위해서는 y['a'] 와 같이 접근하는 것이 옳은 방법입니다. 하지만, str.format 안에서는 딕셔너리의 문자열 키를 문자열을 나타내는 따옴표를 주지 않고 넘겨도 되는군요. 저도 잘 몰랐네요.

    https://docs.python.org/ko/3/tutorial/inputoutput.html#the-string-format-method

    단, 이런 경우 딕셔너리의 키가 정수의 문자열과 정수가 혼합되어 있을 때 혼동이 발생할 수 있을 것 같습니다.

    >>> d = { "33": 0, 33: 1 }
    >>> "{0[33]}".format(d)
    '1'
    

    2에 대한 답변

    y[a]
    

    라고 하였는데, KeyError: 3 이란 에러가 발생했다면, a의 값이 int 3 이였을 겁니다. 어딘가에 a변수의 값을 3으로 지정하는 코드가 있었을 겁니다.

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

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

(ಠ_ಠ)
(ಠ‿ಠ)