5강 / 20강
딕셔너리 — 이름으로 꺼내는 서랍장
번호 대신 열쇠로 찾는다
리스트는 훌륭하지만 한 가지가 불편합니다. "민준이 점수"를 꺼내려면 민준이가 몇 번인지 알아야 해요.
이름들 = ["민준", "서연", "지호"]
점수들 = [95, 88, 76]
# 민준이 점수를 꺼내려면… 먼저 몇 번인지 찾아야 합니다
번호 = 이름들.index("민준")
점수 = 점수들[번호]
게다가 리스트 두 개가 따로 놀기 때문에, 한쪽만 정렬하면 짝이 어긋나 버립니다. 그래서 필요한 게 딕셔너리(dictionary)입니다. 국어사전처럼 낱말을 찾으면 뜻이 나오는 구조예요.
넣기·꺼내기·바꾸기·지우기가 전부 '이름'으로 이루어집니다.
Python
브라우저에서 실행
딕셔너리를 도는 세 가지 방법.
Python
브라우저에서 실행
🎮 서랍장 실험실
열쇠로 값을 꺼내 보세요. 없는 열쇠를 넣으면 어떤 일이 벌어지는지가 핵심입니다. 그리고 리스트 두 개 방식과 나란히 놓고 비교해 보세요.
get() 하나로 '처음 보는 열쇠'를 우아하게 처리합니다.
Python
브라우저에서 실행
딕셔너리 + 리스트 = 진짜 데이터
실전에서는 이 둘을 겹쳐서 씁니다. 한 사람 = 딕셔너리 하나, 여러 사람 = 딕셔너리들의 리스트. 여러분이 앞으로 만나게 될 거의 모든 데이터가 이 모양입니다.
딕셔너리들의 리스트 — 실전 데이터의 표준 모양
Python
브라우저에서 실행
TypeError: unhashable type — '바뀌는 것은 열쇠가 될 수 없다'는 뜻입니다.
Python
브라우저에서 실행
🤔 확인 문제
리스트와 딕셔너리의 가장 큰 차이는?
해설 리스트의 열쇠는 0, 1, 2… 자동으로 매겨진 번호이고, 딕셔너리의 열쇠는 내가 직접 정한 이름입니다.
🤔 확인 문제
점수표.get("하윤", 0) 에서 "하윤"이 없을 때 결과는?해설
get(열쇠, 기본값)은 없을 때 기본값을 돌려줍니다. 기본값을 안 적으면 None이고요. 덕분에 오류로 멈추지 않고 계속 진행할 수 있습니다.🤔 확인 문제
딕셔너리의 열쇠로 쓸 수 없는 것은?
해설 열쇠는 변하지 않는 값이어야 합니다. 리스트는 언제든 바뀔 수 있어서 안 됩니다. 같은 이유로 딕셔너리도 열쇠가 될 수 없어요.