[Python] 파이썬 자료형(5) 딕셔너리(Dictionary)형
딕셔너리형 (Dictionary)
사람에 대한 정보를 기록할 떄, 항목별로 "이름" = "박극복", "생년월일" = "19XX.XX.XX"등 처럼 대응되는 정보끼리 묶어서 기록하곤 합니다.
파이썬 역시 이러한 대응 관계를 나타낼 수 있는 자료형을 갖고 있는데, 이것이 바로 딕셔너리(Dictionary)형 입니다.
"딕셔너리"는 말 그대로 "사전" 이라는 뜻입니다.
사전을 보게 되면, "Sky" 라는 단어에는 "하늘"이라는 뜻이, "apple"이라는 단어네는 "사과"라는 뜻이 각각 대응되어 나타나듯이,
딕셔너리형 역시 "Key값"과 그에 대응되는 "Value값"이 연결된, Key : Value 형식으로 이루어져 있습니다.
다음은 딕셔너리형의 기본 형식입니다.
각각의 대응되는 Key 와 Value가 쉼표(,)로 구분되고, 중괄호{}로 둘러싸여 있습니다.
보통 여기서 Key값으로는 "이름", "생년월일"이라는 항목처럼 변하지 않는 값을 사용하고, Value값으로는 "박극복", "19XX.XX.XX"처럼 변하는 값, 변하지 않는 값 모두 사용할 수 있습니다.
1) 딕셔너리형 VS 리스트형, 튜플형
그렇다면 앞서 살펴 본 리스트형, 튜플형과 딕셔너리형은 무엇이 다를까요?
가장 큰 차이점은 정보를 처리하는 과정 일 것입니다.
우선, 리스트형과 튜플형은 정보를 처리할 떄, 나열된 요솟값을 순차적으로 처리합니다.
그렇다면 딕셔너리형은 어떨까요?
사전에서 "goal"이라는 단어의 뜻을 찾기 위해 우리는 해당 "goal" 단어를 우선 찾습니다.
사전의 첫장부터 "goal"이라는 단어가 나올 떄까지 모든 단어를 순차적으로 찾아본다면, 하루종일 걸릴지도 모르겠네요.
딕셔너리형 역시 이와 같습니다.
나열된 요소들을 순차적으로 처리하는 것이 아니라, 필요한 Key값만을 통해 Value값을 도출해낼 수 있는 것입니다.
2) 딕셔너리형 사용시 주의사항
딕셔너리형을 사용할 때, 몇가지 주의해야할 사항들이 있습니다.
1. Key가 중복되어서는 안된다.
딕셔너리형은 Key값을 통해서 Value값을 얻기 때문에, 딕셔너리에서의 Key값은 고유한 값이어야 합니다.
만약 동일한 Key가 존재한다면, 사용자가 그 Key에 대한 정보를 불러올 떄, 어떤 Key에 해당하는 Value값을 불러내야 할 지 알 수 없기 때문입니다.
혹시 만약 Key값을 중복하여 설정하셨더라도, 에러가 뜨지는 않습니다.
다만, 한 Key를 제외한 나머지 Key는 모두 무시될 뿐입니다.
다음 예시로 한 번 살펴보겠습니다.
"Dic" 이라는 딕셔너리 자료형에는 중복되는 "language"키가 있습니다.
이 상태로 Dic 을 출력해보면, 중복되는 "language"키들이 모두 출력되는 것이 아니라, 하나만 출력되는 것을 볼 수 있습니다.
2. Key값으로 List형을 작성할 수는 없다. (Tuple형은 가능)
앞서 딕셔너리형의 Key값으로는 변하지 않는 항목을 사용한다고 했습니다.
다시 말해, 딕셔너리형의 Key값으로 쓸 수 있는지 여부는 변하는 값이냐, 변하지 않는 값이냐에 따라 달려 있습니다.
바로 앞에서 튜플형과 리스트형의 차이점을 비교해드린 적 있습니다.
두 자료형의 차이는 값을 변화시킬 수 있는지 여부 였는데요,
따라서 값의 변동이 가능한 리스트형은 딕셔너리형의 Key값으로 사용할 수 없고,
값이 변하지 않는 튜플형은 딕셔너리형의 Key값으로 사용할 수 있는 것입니다.
다음 예시로 한 번 살펴보겠습니다.
Key값으로 리스트형을 입력한 결과, 리스트형은 입력이 불가능하다는 에러 메세지가 뜬 것을 확인할 수 있습니다.
3) 딕셔너리형 활용하기
딕셔너리형에 대한 기본적인 것들은 모두 알아보았으니, 이제 딕셔너리형을 활용할 수 있는 방법에 대해 알아보겠습니다.
1. 딕셔너리에 쌍 추가: 딕셔너리명[key] = 'value'
Dict = {'a' : 1}
Dict['b'] = 2
print(Dict)
=> {'a' : 1, 'b' : 2}
2. 딕셔너리에 쌍 제거: del 딕셔너리명[key]
Dict = {'a' : 1, 'b' : 2}
del Dict['b']
print(Dict)
=> {'a' : 1}s
리스트, 튜플형에서 인덱싱, 슬라이싱할 때 대괄호에 넣는 숫자는 '주소'의 의미이고, 딕셔너리형에서 대괄호에 넣는 것은 'key명'입니다!
3. Key값들만 리스트로 추출: 딕셔너리명.keys()
Dict = {'a' : 1, 'b' : 2}
print(Dict.keys())
=> dict_keys(['a', 'b'])
4. value값들만 리스트로 추출: 딕셔너리명.values()
Dict = {'a' : 1, 'b' : 2}
print(Dict.values())
=> dict_values([1, 2])
5. key, value 쌍 튜플로 묶어 추출: 딕셔너리명.items()
Dict = {'a' : 1, 'b' : 2}
print(Dict.items())
=> dict_items([('a', 1), ('b', 2])
6. key, value 쌍 모두 지우기: 딕셔너리명.clear()
Dict = {'a' : 1, 'b' : 2}
print(Dict.clear())
=> {}
7. key값으로 value값 추출: 딕셔너리명.get(key)
Dict = {'a' : 1, 'b' : 2}
print(Dict.get('a'))
=> 1
print(Dict.get('b'))
=> 2
8. 해당 key가 딕셔너리 안에 있는지 여부 검사: key in 딕셔너리명
Dict = {'a' : 1, 'b' : 2}
print('a' in Dict)
=> True
print('c' in Dict)
=> False
'언어) Python' 카테고리의 다른 글
[Python] Python 자료형(6): 집합(Set)형 (0) | 2022.05.08 |
---|---|
[Python] Python 자료형(4): 튜플(Tuple)형 (feat. 리스트형) (0) | 2022.05.01 |
[Python] Python 자료형(3): 리스트(List)형 (0) | 2022.05.01 |
[Python] Python 자료형(2): 문자열(String)형 (0) | 2022.05.01 |
[Python] Python 자료형(1) 숫자(Number)형과 연산자 (0) | 2022.04.28 |