안녕하세요 코드웍스입니다.
이번시간엔 파이썬의 가변형(mutable) 자료구조인 딕셔너리(dictionary)를 알아보도록 하겠습니다. 😎

딕셔너리(dictionary)란?
파이썬에서 딕셔너리(dictionary)는 key와 value를 한쌍으로 저장하는 변경 가능한(mutable) 자료구조형입니다.
딕셔너리 = {'키': '값',
'key': 'value'}
딕셔너리의 특징
- key 의 고유성: 딕셔너리의 key(키)는 중복될 수 없으며, 하나의 key에 하나의 value(값)만 저장됩니다.
- mutable한 자료형: 딕셔너리는 수정할 수 있는 자료형입니다. 단 key는 immutable 객체만 사용할 수 있습니다.
- 순서를 보장: 파이썬3.7 부터 딕셔너리 key-value쌍이 추가된 순서를 기억합니다.
1. dictionary 생성하기
파이썬에서 딕셔너리는 생성하는 여러가지 방법이 있습니다. 하나씩 알아보도록 하겠습니다.🤔
모든 예시는 kpop 그룹 에스파 멤버들의 이름과 국적으로 들어보겠습니다.
1.1 중괄호 사용
가장 기본적인 방법으로 중괄호를 사용해서 dictionary를 생성할 수 있습니다.
빈 중괄호를 변수에 저장하면 빈 딕셔너리가 생성됩니다.
asepa = {} #빈 딕셔너리
#에스파 멤버 이름(키): 멤버의 출신국가(값)
asepa = {'카리나': '한국',
'윈터': '한국',
'닝닝': '중국',
'지젤': '일본'}
print(asepa)
코드웍스에서는 변수를 만든 후, 중괄호로 묶어서 정의할 수 있습니다.
1.2 dict() 생성자 사용
- dict생성자를 사용할때 키는 반드시 문자열이어야합니다.
- 공백이나 특수문자를 포함한 키를 사용하고싶으면 중괄호 방식이 더 적합합니다.
- 키가 중복되지 않도록 주의해야하며, 중복될 경우 마지막 값으로 덮어씌워집니다.
#생성자 dict으로 딕셔너리 생성
asepa = dict(카리나= '한국',윈터 = '한국', 닝닝 = '중국', 지젤 = '일본')
print(asepa)
코드웍스에서는 dict() 생성자를 3번블록> 31번 블록 > 정수형에서 딕셔너리 선택으로 제공합니다.
2. dictionary 값(key) 조회하기
위에서 생성한 에스파 멤버들에 관련된 딕셔너리에서 멤버 '닝닝'의 국적을 조회하고싶다면 어떻게 해야할까요? 생성한 asepa 딕셔너리의 키는 멤버들의 이름이었기때문에, 이를 활용하면 됩니다.
2.1 대괄호로 접근
print(asepa['닝닝'])
코드웍스에서는 0번 변수> 2번째 블록을 사용하시면 됩니다.
생성한 딕셔너리는 가만히 두고, var를 asepa로 변환, 대괄호 부분에 '닝닝'을 입력합니다.
그리고 출력해보겠습니다.
멤버 닝닝의 출신 국가인 중국이 잘 출력되는 것을 확인하실 수 있습니다.
2.2 get() 메서드로 접근
get() 메서드를 사용해서 key의 값에 접근하는 방법도 있습니다. 이때 찾고자 하는 key를 get괄호 사이에 입력하면 key를 찾아서 값을 출력하게됩니다.
print(asepa.get('닝닝'))
print(asepa.get('카리나'))
코드웍스에서는 get 메서드를 3번 블록 > 35번 블록에서 제공합니다.
닝닝과 카리나의 출신 국가를 출력해보겠습니다.
중국과 한국으로 잘 출력된 것을 확인하실 수 있습니다.
3. dictionary 값() 추가 & 수정하기
3.1 새로운 key - value 추가하기
에스파 멤버는 사실 4명이 아니라 5명인 사실 알고 있으신가요? '광야' 국가 출신의 '나비스'인데요, 한번 추가해보도록 하겠습니다. 대괄호로 키 조회하는 방법과 비슷하게 새로운 키와 값을 추가할 수 있습니다.
아래는 새로운 멤버 나비스의 출신국가 광야와 함께 에스파 딕셔너리에 추가하는 예시입니다.
#멤버 나비스, 광야라는 출신국가
asepa['나비스'] = '광야'
print(asepa)
코드웍스에서도 키 조회와 비슷한 방법으로 추가하면 됩니다. 출력을 해보시면, 마지막에 나비스와 그의 값 광야가 잘 추가된 것을 확인하실 수 있습니다. 😎
3.2 기존 값 수정하기
지젤은 사실 한국국적도 가지고 있었는데요, 딕셔너리에서 한국 국적을 추가해서 수정해보겠습니다.
asepa['지젤'] = '일본','한국'
print(asepa)
수정하고싶은 키를 대괄호에 입력해서 부르고, = 이후에 수정할 값들을 입력하시면 변경됩니다.
3.3 update()
- 여러 key-value쌍을 한번에 추가 가능합니다
- 기존 key는 덮어씌워지고, 새로운 key는 추가됩니다. --> 여러 데이터를 한번에 추가, 수정할 수 있습니다.
- 중괄호로 감싸서 수정하거나 추가할 key-value쌍을 추가하시면 됩니다.
이제 에스파 멤버들의 딕셔너리의 모든 멤버의 출신국가를 영어로 업데이트를 해보겠습니다.
asepa.update({'카리나': 'Korea', '윈터': 'Korea', '닝닝': 'China', '지젤': 'Japan'})
print(asepa)
코드웍스에서는 update메서드를 3번 블록> 35번 블록에서 제공합니다.
위의 모든 예시에 대한 코드웍스 코드는 아래 링크에서 사용하실 수 있습니다.
4. dictionary 값 삭제하기
딕셔너리의 값을 삭제하는 방법에는 여러가지가있습니다.하나씩 알아보도록 하겠습니다.
4.1 del
특정 멤버를 딕셔너리에서 삭제하고 싶을때는 del을 사용하면 됩니다.
이번 예시에서는 나비스를 삭제해보겠습니다.
#del 딕셔너리['키']
del asepa['나비스']
코드웍스에서는 del을 따로 지원하지 않습니다. 그렇기때문에, 1번 블록> line 블록을 선택해서 위의 코드를 써놓으면 됩니다.
코드웍스 line블록의 위치

잘 나비스가 삭제된 것을 확인하실 수 있습니다.
4.2 pop()
pop() 메서드를 사용하면 키에 해당하는 값을 반환하고, 삭제하게됩니다.
그럼 이번에도 '나비스'를 삭제해볼까요? 괄호 사이에 삭제하고 싶은 키를 입력하시면 됩니다.
#딕셔너리.pop(키)
print(asepa.pop('나비스'))
print(asepa) #삭제 확인
코드웍스에서는 3번 블록> 35번 블록 > pop 을 선택하시면 됩니다.
결과를 보시면 '나비스' 키의 값인 광야가 출력되는 것을 확인하실 수 있습니다. 그리고, asepa 딕셔너리에서 나비스 키가 삭제된 것을 확인하실 수 있습니다.
4.3 popitem()
popitem() 메서드는 딕셔너리에서 마지막 key-value쌍을 삭제하고 반환합니다.
print(asepa.popitem())
print(asepa) #삭제 확인
코드웍스에서는 마찬가지로 3번 블록> 35번 블록 > popitem()을 선택하셔서 사용하시면 됩니다.
key value쌍을 반환하고, 딕셔너리에서는 삭제 된 것을 확인하실 수 있습니다.
4.4 clear()
딕셔너리의 모든 정보를 삭제하고 싶을땐, clear 메서드를 사용하시면 됩니다.
asepa.clear()
print(asepa)
모든 정보가 삭제된 것을 확인하실 수 있습니다.
코드웍스 코드는 아래 링크에서 확인하실 수 있습니다
코드웍스 팁
제공된 코드웍스 코드를 클릭하시면 다음과 같이 나타날 것입니다.
각각의 예시를 실행시키고 싶으시면 비활성화된 블록을 활성화 시키시면 됩니다.

활성화는 오른쪽 마우스 클릭 > 블록활성화 클릭 하시면 됩니다.

그러면, 블록이 활성화되면서 파이썬 코드도 생성되며, 실행하시면 실행이 되는 상태가 됩니다.

5. 딕셔너리 메서드
5.1 keys()
딕셔너리의 모든 키를 얻고싶을땐, key메서드를 사용하시면 됩니다.
print(asepa.keys())
코드웍스에서는 딕셔너리의 모든 메서드를 35번 블록에서 제공합니다. keys()또한 35번 블록에서 선택하시면 됩니다.
딕셔너리의 키들이 반환된 것을 확인하실 수 있습니다. 그렇다면 값들만 출력하고싶으면 어떻게 해야할까요?
5.2 values()
딕셔너리의 모든 값들을 얻고싶을땐, values() 메서드를 사용하시면 됩니다.
print(asepa.values())
실행 결과를 보시면, value인 각 에스파 멤버들의 출신 국가가 출력된 것을 확인하실 수 있습니다.
5.3 items()
- 모든 key-value쌍을 튜플(tuple)형태로 가져오는 메서드입니다.
- 모든 항목을 (key, value) 형태로 반환해서. 반복문에서 쉽게 딕셔너리의 내용을 확인하거나 처리하도록 합니다.
print(asepa.items())
출력된 결과를 보시면, key value쌍이 출력된 것을 확인하실 수 있습니다.
5.4 copy()
- copy메서드는 딕셔너리에서 얕은 복사(shallow copy)를 만듭니다.
- 기존 딕셔너리와 동일한 key-value쌍을 갖는 새로운 딕셔너리를 생성합니다.
- 원본 딕셔너리에 영향을 주지 않고 독립적인 사본을 사용할 수 있습니다.
- 가변 객체(리스트, 딕셔너리, 집합)가 포함된 경우, 사본에서 가변 객체를 수정하면 원본에도 영향을 줄 수 있습니다.
- 중첩된 구조를 모두 복사하려면 copy.deepcopy()를 사용하는 것이 안전합니다.
본 포스팅에서는 기초부분만 다루기때문에 예시는 없습니다.
dicts = asepa.copy()
print(dicts)
실행결과를 보시면 아래와같이 그대로 딕셔너리가 복사된 것을 확인하실 수 있습니다.
5.5 fromkeys()
- 지정된 key목록과 공통된 초기값을 사용해 새로운 딕셔너리를 생성할 때 사용됩니다.
- 여러 key에 같은 초기값을 설정할때 간편하게 활용 가능합니다.
- 기본값을 지정하지 않으면 None이 기본값으로 설정됩니다.
#딕셔너리.fromkeys(키, 값)
dict = {}
print(dict.fromkeys(['카리나','윈터','닝닝','지젤']))
print(dicts.fromkeys(['카리나','윈터','닝닝','지젤'], '광야'))
키로 설정하고 싶은 에스파 멤버들 이름을 리스트로 fromkeys()에 넣으면, 새로운 딕셔너리가 생성되는 것을 확인하실 수 있습니다. 이때, value들은 default값인 None으로 설정된 것을 확인하실 수 있습니다. value를 광야로 설정하면, 설정된채로 생성되는 것을 확인하실 수 있습니다.
5.6 get()
- 파이썬 딕셔너리에서 key를 사용해서 value를 조회하고, 반환하는 메서드입니다.
- key값이 존재하지 않을때, 기본값(None)이나 사용자가 지정한 문구를 출력할 수 있도록 합니다.
- key가 존재하지 않는 경우 기본값을 설정할 수 있어 KeyError를 방지할 수 있습니다.
#딕셔너리.get(키, default_value)
print(asepa.get('나비스'))
print(asepa.get('ae', 'ae는 없음'))
결과를 보시면, 에스파 딕셔너리에 ae는 없으므로, ae는 없음이 출력되었고, '윈터'는 존재하므로, 윈터의 value인 한국이 출력된 것을 확인하실 수 있습니다.😎
5.7 setdefault()
- key의 값을 반환하거나, key가 없다면 key와 기본값을 딕셔너리에 추가합니다.
- 특정 key가 딕셔너리에 있는지 확인하고 기본값을 설정할 때 유용합니다.
- 코드의 가독성을 높이고, 중복 코드를 줄여줍니다.
#딕셔너리.setdefault(key, default_value)
print(asepa.setdefault('카리나'))
print(asepa.setdefault('ae', '광야'))
print(asepa)
카리나를 setdefault에 넣으면, asepa 딕셔너리에 존재하기 때문에 한국이 반환됩니다.
하지만. 'ae'는 존재하지 않기 때문에 사용자가 지정한 '광야'가 value로 지정됩니다.
그 후, 출력을 해보면, 'ae'키에 '광야'가 asepa 딕셔너리에 추가된 것을 확인하실 수 있습니다.
코드웍스 실습코드는 아래 링크에서 확인하실 수 있습니다.
지금까지 파이썬에서 가장 많이 쓰이는 자료형 중 하나인 딕셔너리(dictionary)에 대해 알아보았습니다.
궁금한 내용이나 질문 있으시면 편하게 댓글로 질문해주시면 답변해드리겠습니다.
긴글 읽어주셔서 감사합니다 😌
글이 유용하셨으면 좋아요나 구독 부탁드립니다! 🤗
코드웍스로 진행하는 파이썬 기초강의도 유튜브에 공개되어있으니 구경오세요!
본강의는 하버드대학의 파이썬 CS50P 과정을 코드웍스를 활용하여 진행합니다! 😎
'🦎파이썬 > 🧱 파이썬 기초 블록코딩' 카테고리의 다른 글
[파이썬 기초] 집합 set (2) | 2024.11.10 |
---|---|
[파이썬 기초] 리스트 List (5) | 2024.10.16 |
[파이썬 기초] 반복문 for (5) | 2024.10.12 |
[파이썬 기초] 자료형과 연산 - 숫자형, 부울형, 문자열 (8) | 2024.10.06 |
[파이썬 기초] 조건문 if (11) | 2024.09.22 |
[파이썬 기초] 출력 print (2) | 2024.09.12 |