딕셔너리(Dictionary)
1. 딕셔너리 선언
- 딕셔너리(Dictionary) : 키를 기반으로 여러가지 자료를 저장할 수 있는 자료형
- 키(Key) : 딕셔너리 내부에서 값을 찾기 위해 사용
- 값(Value) : 딕셔너리 내부에서 키를 통해 찾을 수 있는 각각의 내용
1.1 기본 표현
- 중괄호({ }) 안에 '키 : 값' 형태를 쉼표(,)로 구분한 값을 나열하여 선언
- dict() 혹은 { }로 빈 딕셔너리 생성 가능
- len()함수로 요소 개수 확인 가능
- 키의 자료형으로 숫자형, 문자형, 논리형, 튜플 가능
- 키는 중복 및 변경 불가
- 값의 자료형으로 숫자형, 문자형, 논리형, 리스트, 튜플, 집합, 딕셔너리 가능
# 기본 표현
# 빈 딕셔너리 생성
my_dict1 = {}
my_dict2 = dict()
# 확인
print(my_dict1) # {}
print(my_dict2) # {}
# 딕셔너리 생성
my_dict3 = {"key1" : "value1", "key2" : "value2", "key3" : "value3"}
# 확인
print(my_dict3) # {'key1': 'value1', 'key2': 'value2', 'key3': 'value3'}
# 요소 개수 확인
print(len(my_dict3)) # 3
# 다양한 자료형 키 생성 - 숫자형, 문자형, 논리형, 튜플
my_dict4 = {1 : 11, "A" : 12, True : 13, (10, 20) : 14}
# 확인
print(my_dict4) # {1: 13, 'A': 12, (10, 20, 30): 14}
# 다양한 자료형 값 생성 - 숫자형, 문자형, 논리형, 리스트, 튜플, 집합
my_dict5 = {1 : 10, 2 : "ABC", 3 : True, 4 : [20, 30, 40], 5 : ("D", "E"), 6 : {50, 50, "F"}}
# 확인
print(my_dict5) # {1: 10, 2: 'ABC', 3: True, 4: [20, 30, 40], 5: ('D', 'E'), 6: {50, 'F'}}
1.2 자료형 변환
- dict() 함수를 사용하여 다른 자료형을 딕셔너리로 변환
# 딕셔너리로 자료형 변환
# 리스트 → 딕셔너리
my_list = [["A", 65], ["B", 66], ["C", 67]]
print(dict(my_list)) # {'A': 65, 'B': 66, 'C': 67}
# 튜플 → 딕셔너리
my_tuple = (("a", 97), ("b", 98), ("C", 99))
print(dict(my_tuple)) # {'a': 97, 'b': 98, 'C': 99}
2. 딕셔너리 조회
- 키를 사용해 딕셔너리 안에서 값을 찾는 과정
- 대괄호 안에 키를 입력하여 원하는 값 확인
# 키로 딕셔너리 조회
# 딕셔너리 선언
my_dict = {"k1" : "v1", "k2" : "v2", "k3" : ["v3", "v13", "v23"], "k4" : "v4"}
# 확인
print(my_dict["k1"]) # v1
print(my_dict["k3"][1]) # v13
3. 딕셔너리 변경, 추가, 제거
3.1 딕셔너리 값 변경
- '딕셔너리[기존 키] = 수정할 값' 형태로 수정하려는 키와 값을 입력
# 딕셔너리 값 변경
# 딕셔너리 선언
my_dict = {"k1" : "v1", "k2" : "v2", "k3" : ["v3", "v13", "v23"], "k4" : "v4"}
# 값 변경
my_dict["k2"] = "v22"
# 확인
print(my_dict) # {'k1': 'v1', 'k2': 'v22', 'k3': ['v3', 'v13', 'v23'], 'k4': 'v4'}
3.2 딕셔너리 값 추가
- '딕셔너리[새로운 키] = 새로운 값' 형태로 수정하려는 키와 값을 입력
- 새로운 키에 기존 키를 중복으로 입력하면 기존 키에 저장되어 있던 값 변경
# 딕셔너리 값 추가
# 딕셔너리 선언
my_dict = {"k1" : "v1", "k2" : "v2", "k3" : ["v3", "v13", "v23"], "k4" : "v4"}
# 값 추가
my_dict["k5"] = ["v5", "v15"]
# 확인
print(my_dict) # {'k1': 'v1', 'k2': 'v2', 'k3': ['v3', 'v13', 'v23'], 'k4': 'v4', 'k5': ['v5', 'v15']}
3.3 딕셔너리 값 제거
- del : 딕셔너리의 특정 키를 지정하여 값 제거
- pop(x) : 특정 키 값을 지정하여 값 제거, 제거된 값을 반환
- popitem() : 키 지정 없이 마지막 값부터 제거
- clear() : 딕셔너리의 모든 값 제거
- 딕셔너리 = { } : 딕셔너리 모든 값을 제거하여 초기화
# 딕셔너리 값 제거
# 딕셔너리 선언
my_dict = {"k1" : "v1", "k2" : "v2", "k3" : ["v3", "v13", "v23"], "k4" : "v4"}
# 확인
print(my_dict) # {'k1': 'v1', 'k2': 'v2', 'k3': ['v3', 'v13', 'v23'], 'k4': 'v4'}
# 특정 키의 값 제거
del my_dict["k2"]
# 확인
print(my_dict) # {'k1': 'v1', 'k3': ['v3', 'v13', 'v23'], 'k4': 'v4'}
# 특정 키의 값 제거 및 할당
del_my_dict = my_dict.pop("k4")
# 확인
print(del_my_dict) # v4
print(my_dict) # {'k1': 'v1', 'k3': ['v3', 'v13', 'v23']}
# 마지막 값부터 제거
my_dict.popitem()
# 확인
print(my_dict) # {'k1': 'v1'}
# 전부 제거
my_dict.clear()
# 확인
print(my_dict) # {}
4. 딕셔너리 관련 메소드
- keys() : 딕셔너리의 전체 키 확인
- values() : 딕셔너리의 전체 값 확인
- items() : 딕셔너리의 모든 키와 값 확인하여 튜플 형태로 반환
- get() : 키를 사용해 딕셔너리 안에서 값을 찾는 과정
찾는 키가 없는 경우에 반환할 값 지정 가능
# 딕셔너리 선언
my_dict = {"k1" : "v1", "k2" : "v2", "k3" : ["v3", "v13", "v23"], "k4" : "v4"}
# 전체 키 확인
print(my_dict.keys()) # dict_keys(['k1', 'k2', 'k3', 'k4'])
# 전체 값 확인
print(my_dict.values()) # dict_values(['v1', 'v2', ['v3', 'v13', 'v23'], 'v4'])
# 전체 키와 값 확인
print(my_dict.items()) # dict_items([('k1', 'v1'), ('k2', 'v2'), ('k3', ['v3', 'v13', 'v23']), ('k4', 'v4')])
# 키로 값 확인
print(my_dict.get("k3")) # ['v3', 'v13', 'v23']
# 키가 없는 경우 반환값 지정
value_check = my_dict.get("k5", "value not exist")
print(value_check) # value not exist
자료형 | 의미 | 표현 방식 | 특징 |
리스트 | 순서가 있는 자료를 저장하는 컨테이너 자료형 | my_list = [ ] | 인덱스를 기반으로 값 저장, 중복 가능 |
튜플 | 수정이 불가능한 자료를 저장하는 컨테이너 자료형 | my_tuple = ( ) | 리스트와 달리 수정 불가능, 중복 가능, 인덱싱 가능 |
집합 | 중복된 값을 가지지 않는 컨테이너 자료 | my_set = { } | 순서가 없어 인덱싱 불가능, 중복 불가능 |
딕셔너리 | 키와 값으로 구성된 자료를 저장하는 컨테이너 자료형 | my_dict = {key : value} | 키를 기반으로 값 저장, 키는 중복 불가능 |
'STUDY > PYTHON' 카테고리의 다른 글
[Python] 7. 함수 (2) | 2024.11.12 |
---|---|
[Python] 6. 조건문 & 반복문 (3) | 2024.11.11 |
[Python] 4. 튜플 & 집합 (3) | 2024.11.09 |
[Python] 3. 리스트 (0) | 2024.11.08 |
[Python] 2. 문자형 (0) | 2024.09.21 |