본문 바로가기
파이썬

파이썬 컬렉션{딕셔너리}

by 코낄2 2023. 9. 6.

1. 딕셔너리

파이썬의 딕셔너리는 - 쌍을 저장하는 변경 가능한(mutable) 컬렉션입니다.

딕셔너리는 중괄호 {} 사용하여 생성하고, - 쌍들은 쉼표 , 구분됩니다.  - 쌍은 콜론 :으로 구분됩니다.

세트{}와 동일하게 요소에 순서가 없습니다. 따라서 인덱스 값이 아닌 '키'를 이용하여 '값'을 참조합니다.

*** 파이썬에서 빈 중괄호 형태는 기본적으로 딕셔너리 타입으로 분류됩니다.

dic2 = {1:'김사과', 2:'반하나', 3:'오렌지', 4:'이메론'}
print(dic2)
print(dic2[1])   >> 김사과
print(dic2[3])   >> 오렌지
# 대괄호 안의 입력값은 인덱스가 아닌 키값이다.

딕셔너리의 '키'는 '변경 불가능한(immutable) 타입'이어야 합니다. 예를 들어, 문자열, 정수, 튜플은 딕셔너리의 키로 사용할  있지만, 리스트는 딕셔너리의 키로 사용할  없습니다. 하지만 딕셔너리의 값은 어떤 타입이든 상관없습니다.

다만, 딕셔너리는 변경 가능합니다. 따라서, 딕셔너리에 - 쌍을 추가하거나 제거하거나, 기존의 키의 값을 변경할  있습니다.

dic1 = {1:'apple'}

dic1[100] = 'orange'
print(dic1)      >> {1: 'apple', 100: 'orange'}

dic1[50] = 'melon'   
print(dic1)      >> {1: 'apple', 100: 'orange', 50: 'melon'}

del dic1[1]
print(dic1)      >>{100: 'orange', 50: 'melon'}
dic1 = {'no':1, 'userid':'apple', 'name':'김사과', 'hp':'010-1111-1111'}
dic1['no'] = 10
print(dic1)        >> {'no': 10, 'userid': 'apple', 'name': '김사과', 'hp': '010-1111-1111'}
dic1[(1, 2, 3)] = [90, 100, 50# 키 값에 list를 넣으면 오류
print(dic1)        >> {'no': 10, 'userid': 'apple', 'name': '김사과', 'hp': '010-1111-1111', (1, 2, 3): [90, 100, 50]}
dic1['과일'] = {'사과': '🍎','딸기': '🍓','앵두': '🍒'}
print(dic1)
 >> {'no': 10, 'userid': 'apple', 'name': '김사과', 'hp': '010-1111-1111', (1, 2, 3): [90, 100, 50], '과일': {'사과': '🍎', '딸기': '🍓', '앵두': '🍒'}}

2. 딕셔너리의 함수와 메소드

# len(): 딕셔너리의 길이(키-값 쌍의 개수)를 구할 수 있는 함수

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

# keys(): 딕셔너리의 모든 키를 반환하는 메서드

dic1 = {'no':1, 'userid':'apple', 'name':'김사과', 'hp':'010-1111-1111'}
print(dic1.keys())    # 키들을 리스트 형식으로 반환
>> dict_keys(['no', 'userid', 'name', 'hp'])

# values(): 딕셔너리의 모든 값을 반환하는 메서드

dic1 = {'no':1, 'userid':'apple', 'name':'김사과', 'hp':'010-1111-1111'}
print(dic1.values())    # 값들을 리스트 형식으로 반환
>> dict_values([1, 'apple', '김사과', '010-1111-1111'])

# items(): 딕셔너리의 모든 키-값 쌍을 반환하는 메서드

dic1 = {'no':1, 'userid':'apple', 'name':'김사과', 'hp':'010-1111-1111'}
print(dic1.items()) # 키-값 을 튜플로 감싸고, 전체 데이터를 리스트로 묶은 결과를 반환.
>> dict_items([('no', 1), ('userid', 'apple'), ('name', '김사과'), ('hp', '010-1111-1111')])

# get(): 특정 키의 값을 반환. 만약 그 키가 딕셔너리에 없으면, None을 반환하는 메서드

dic1 = {'no':1, 'userid':'apple', 'name':'김사과', 'hp':'010-1111-1111'}
print(dic1['userid'])                        >> apple
# print(dic1['age']) # KeyError: 'age' # 없는 값을 찾으면 에러가 남.
print(dic1.get('userid'))                  >> apple
print(dic1.get('age'))                      >> None
print(dic1.get('age', '나이를 알 수 없음')) # 갑이 없을 때 출력 될 문구 입력 가능
                                                      >> 나이를 알 수 없음

# pop(): 특정 키의 값을 제거하고 반환. 만약 그 키가 딕셔너리에 없으면, KeyError가 발생하는 메서드

dic1 = {'no':1, 'userid':'apple', 'name':'김사과', 'hp':'010-1111-1111'}
print(dic1.pop('hp'))          >> 010-1111-1111
print(dic1)                         >> {'no': 1, 'userid': 'apple', 'name': '김사과'}
# print(dic1.pop('age')) # 없는 값을 삭제하려고 하면 에러

*** 멤버십 테스트

in 연산자를 사용하여 딕셔너리 특정 키가 있는지 확인할  있습니다.

dic1 = {'no':1, 'userid':'apple', 'name':'김사과', 'hp':'010-1111-1111'}
print('hp' in dic1)          >> True
print('age' in dic1)        >> False

'파이썬' 카테고리의 다른 글

제어문- 조건문  (0) 2023.09.07
파이썬 연산  (0) 2023.09.07
파이썬 컬렉션{세트}  (0) 2023.09.06
input 함수  (0) 2023.09.05
파이썬 컬렉션 (튜플)  (0) 2023.09.05