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 |