Python

컬렉션 타입 (딕셔너리)

gudwns5533 2026. 5. 26. 17:50

파이썬의 딕셔너리는 키(Key) - 값(Value) 쌍을 저장하는 순서 없는, 변경 가능한(mutable) 컬렉션.

딕셔너리는 중괄호 {}를 사용하여 생성하고, 키-값 쌍들은 쉼표 , 로 구분됨.

각 키-값 쌍은 콜론 : 으로 구분된다.

딕셔너리의 특징
  • Key와 Value의 쌍 : 데이터를 저장할 때 반드시 매칭되는 키와 값을 함께 적어야 한다.
  • 순서가 없음 (Unordered) : 리스트나 튜플처럼 인덱스 번호로 값에 접근하지 않고, Key값을 사용해서 원하는 Value에 접근한다.
  • Key값은 중복 불가, Value값은 중복 가능 : 하나의 딕셔너리 안에 똑같은 이름의 Key는 존재할수 없지만 똑같은 Value는 여러개 있어도 상관없음.
  • Key는 변하지 않는 타입만 가능 : 딕셔너리의 키값은 한번 정하면 바꿀 수 없는 문자열, 숫자, 튜플 등만 사용 가능.
딕셔너리의 생성
dic1 = {}
print(dic1)
print(type(dic1))

# {}
# <class 'dict'>

dic2 = {1:'김사과', 2:'반하나', 3:'오렌지', 4:'이메론', 5:'김사과'} 
# key값은 중복될 수 없지만 value값은 중복될 수 있다.
print(dic2)
print(type(dic2))

# {1: '김사과', 2: '반하나', 3: '오렌지', 4: '이메론', 5: '김사과'}
# <class 'dict'>

# key값은 value값 확인용
print(dic2[1])
print(dic2[3])

# 김사과
# 오렌지

dic3 = {'no':1, 'userid':'apple', 'name':'김사과', 'hp':'010-1111-1111'}
print(dic3)
print(dic3['userid'])
print(dic3['hp'])

# {'no': 1, 'userid': 'apple', 'name': '김사과', 'hp': '010-1111-1111'}
# apple
# 010-1111-1111
딕셔너리 수정하기

 

딕셔너리에 키-값 쌍을 추가하거나, 제거하거나, 기존의 키의 값을 변경 할 수 있다.

단, 딕셔너리의 키는 변경 불가능한(immutable) 타입이어야 한다.

예를 들어, 문자열, 정수, 튜플은 딕셔너리의 키로 사용할 수 있지만, 리스트는 딕셔너리의 키로 사용할 수 없다.

하지만 딕셔너리의 값은 어떤 타입이든 상관없다.

dic4 = {1:'apple'}
print(dic4)

# {1: 'apple'}

dic4[100] = 'banana'
print(dic4)           # 데이터 추가

# {1: 'apple', 100: 'banana'}

dic4[100] = 'orange'
print(dic4)           # 데이터 수정

# {1: 'apple', 100: 'orange'}

del dic4[100]         # 데이터 삭제
print(dic4)

# {1: 'apple'}

dic4['50'] = [apple, orange]                 # Value값으로 리스트 사용 가능.
print(dic4)

# {1: 'apple', 50: [apple, orange]}

dic4[[10, 20, 30]] = ['십', '이십', '삽십']   # Key값으로 리스트는 사용할 수 없음.
print(dic4)

# TypeError: unhashable type: 'list'
딕셔너리의 함수와 메서드

 

1. keys()

딕셔너리의 모든 키를 반환

dic3 = {'no':1, 'userid':'apple', 'name':'김사과', 'hp':'010-1111-1111'}
print(dic3.keys())

# dict_keys(['no', 'userid', 'name', 'hp'])

 

2. values()

딕셔너리의 모든 값을 반환

dic3 = {'no':1, 'userid':'apple', 'name':'김사과', 'hp':'010-1111-1111'}
print(dic3.values())

# dict_values([1, 'apple', '김사과', '010-1111-1111'])

 

3. items()

딕셔너리의 모든 키-값을 튜플로 반환

dic3 = {'no':1, 'userid':'apple', 'name':'김사과', 'hp':'010-1111-1111'}
print(dic3.items())

# dict_items([('no', 1), ('userid', 'apple'), ('name', '김사과'), ('hp', '010-1111-1111')])

 

4. get()

특정 키에 대한 값을 반환. 만약 키가 딕셔너리에 없으면 None을 반환

dic3 = {'no':1, 'userid':'apple', 'name':'김사과', 'hp':'010-1111-1111'}

print(dic3['userid'])
# print(dic3['gender'])     # KeyError: 'gender'
print(dic3.get('userid'))
print(dic3.get('gender'))   # None

# None을 치환할 수 있는 문자열을 설정할 수 있음
print(dic3.get('gender', '성별 알수없음'))
print(dic3.get('name', '이름 알수없음'))

# apple
# apple
# None
# 성별 알수없음
# 김사과

 

5. pop()

특정 키에 대한 값을 제거하고 제거된 값을 반환. 키가 없다면 에러

dic3 = {'no':1, 'userid':'apple', 'name':'김사과', 'hp':'010-1111-1111'}

temp = dic3.pop('hp')
print(dic3)
print(temp)

# {'no': 1, 'userid': 'apple', 'name': '김사과'}
# 010-1111-1111

 

6. in

딕셔너리에 특정 키가 있는지 확인. bool 값을 반환.

dic3 = {'no':1, 'userid':'apple', 'name':'김사과', 'hp':'010-1111-1111'}

print('hp' in dic3)
print('010-1111-1111' in dic3)

# True
# False

'Python' 카테고리의 다른 글

제어문 - 반복문  (0) 2026.05.27
제어문 - 조건문  (1) 2026.05.27
컬렉션 타입 (세트)  (0) 2026.05.26
컬렉션 타입 (튜플)  (0) 2026.05.26
1.1 + 0.1 == 1.2 가 False가 나오는 이유  (1) 2026.05.25