본문 바로가기
파이썬/파이썬 기초 문법

파이썬 컬렉션 타입 (4) 딕셔너리

by 쵠몽 2024. 9. 26.

딕셔너리

키-값 쌍을 저장하는 변경 가능한(mutable) 컬렉션

키는 중복될 수 없고 값은 중복돼도 상관이 없다

 

1. 딕셔너리 생성

dic1 = {}
print(dic1)
print(type(dic1))

dic2 = {1:'김사과', 2:'반하나', 3:'오렌지', 4:'이메론'} # 1: 키, '김사과': 값
print(dic2)
print(type(dic2))

dic2 = {1:'김사과', 2:'반하나', 3:'오렌지', 2:'이메론'}
# 키가 중복되면 값을 재저장
print(dic2)
print(type(dic2))

dic2 = {1:'김사과', 2:'반하나', 3:'오렌지', 4:'이메론'}
print(dic2[2])
print(dic2[4])

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

 

 

2. 딕셔너리 변경

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

dic4[100] = 'banana'
print(dic4)

dic4[50] = 'orange'
print(dic4)

dic4[100] = 'melon'
print(dic4)
del dic4[100]
print(dic4)

 

 

3. 키, 값의 변경

딕셔너리의 키는 변경 불가능한 타입이어야 한다. 리스트와 같은 변경 가능한 타입은 키로 사용할 수 없다. 하지만 딕셔너리의 값은 어떤 타입이든 사용 가능하다.

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

# 요소 추가
dic3['gender'] = 'female'
print(dic3)

# 요소의 값 변경
dic3['no'] = 10
print(dic3)

dic3['score'] = [100, 90, 40]
print(dic3)

# dic3[[10, 20, 30]] = ['십', '이십', '삼십'] # 딕셔너리의 키 list 불가능
# print(dic3)

dic3[(10, 20, 30)] = ['십', '이십', '삼십']
print(dic3)

dic3['과일'] = {'사과':'🍎', '딸기':'🍓', '수박':'🍉'}
print(dic3)

 

 

4. 딕셔너리의 함수와 메서드

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

# keys(): 딕셔너리의 모든 키를 반환
print(dic3.keys())
dic3 = {'no': 1, 'userid':'apple', 'name':'김사과', 'hp':'010-1111-1111'}
print(dic3)

# values(): 딕셔너리의 모든 값을 반환
print(dic3.values())
dic3 = {'no': 1, 'userid':'apple', 'name':'김사과', 'hp':'010-1111-1111'}
print(dic3)

# items(): 딕셔너리의 모든 키-값을 튜플로 묶어서 반환
print(dic3.items())
dic3 = {'no': 1, 'userid':'apple', 'name':'김사과', 'hp':'010-1111-1111'}
print(dic3)

# get(): 특정 키에 대한 값을 반환. 만약 키가 딕셔너리에 없으면 None을 반환
# None을 치환할 수 있는 문자열을 설정할 수 있음
print(dic3['userid'])
# print(dic3['gender']) # KeyError: 'gender'
print(dic3.get('userid'))
print(dic3.get('gender'))   # None
print(dic3.get('gender', '성별 알 수 없음'))  # 성별 알 수 없음
print(dic3.get('name', '이름 알 수 없음'))    # 김사과
dic3 = {'no': 1, 'userid':'apple', 'name':'김사과', 'hp':'010-1111-1111'}
print(dic3)

# pop(): 특정 키에 대한 값을 제거하고 제거된 값을 반환. 키가 없다면 에러
temp = dic3.pop('hp')
print(dic3)
print(temp)

 

 

5. 딕셔너리 특정 키 확인

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

# in: 딕셔너리에 특정 키가 있는지 확인
print('hp' in dic3)
print('010-1111-1111' in dic3)