딕셔너리는 키(Key)와 값(Value)이 쌍을 이루는 자료형 태이다. 리스트나 튜플처럼 순서대로 해당 요소 값을 구하지 않고 키(Key)를 통해 값(Value)를 얻어내는 방식이다.
1. 딕셔너리 형태
- 중괄호({}) 안에 데이터를 넣고 데이터끼리의 구분은 컴마(,)로 표시한다.
- 키와 값의 쌍을 이루는 데이터로 {Key1 : Value1, Key2 : Value2, ...}과 같은 형태로 이루어져 있다.
2. 딕셔너리 특징
딕셔너리는 키와 값, 둘 모두 숫자형과 문자형이 가능하고, 키는 중복이 허용되지 않고 하나의 값만 가져야 한다. 이해하기 쉽게 얘기하자만 키는 하나의 문만 열려야지 다른 문도 열면 안 되기 때문에 하나의 값만 가지고 있다고 생각하면 이해하는데 도움이 된다.
3. 딕셔너리 사용법
딕셔너리는 쌍을 이루기 때문에 데이터를 삭제 또는 추가하는 경우에도 쌍으로 입력해야 한다. 또 생성 시 주의사항과 관련 함수들에 대해서도 알아보도록 하자.
1) 쌍 추가 및 삭제하기
딕셔너리를 생성 시에는 대괄호 안에 넣지만 이미 생성된 딕셔너리에 추가하기 위해서는 조금 다른 형태로 추가하기 때문에 잘 알아두어야 한다.
추가하기 [입력값] dic = {1 : 'a', 2 : 'b'} → 2쌍이 들어있는 딕셔너리 자료 dic [출력결과] {1 : 'a', 2 : 'b'} [입력값] 딕셔너리에 추가하기 dic[3] = 'c' → []안에 키를 넣어주고, '=' 오른편에 값을 넣어줌 [출력결과] {1 : 'a', 2 : 'b', 3 : 'c'} → 키가 3이고 값이 c인 자료가 추가됨 삭제하기 [입력값] del dic[1] dic [출력결과] {2 : 'b', 3 : 'c'} → 키가 1인 쌍이 삭제됨 |
2) 키(Key)를 이용한 값(Value) 얻기
딕셔너리의 []안의 값은 리스트와 튜플과는 다른 의미로 생각해야 한다. 리스트와 튜플에서는 []안의 숫자는 해당 순서를 나타내는데 딕셔너리의 경우 키에 해당하는 값을 가져오라는 의미이다. 아래 예제와 같이 dic[2]이면 키가 2인 값을 불러오라는 의미이므로 'b'를 출력한다. 또한 함수로도 동일한 결과를 생성할 수 있는데 dic.get(2)를 사용하면 아래 예제와 동일한 결과값을 생성할 수 있다.
단, 둘의 차이는 key가 없는 경우 딕셔너리명[key]를 사용한 경우는 에러가 발생하고, 딕셔너리명.get(key)를 넣은 경우는 'None'이라는 값을 발생시킨다.
dic = {2 : 'b', 3 : 'c'} [입력값] dic[2] [출력결과] 'b' |
3) 딕셔너리 관련 함수
딕셔너리의 경우 쌍으로 이루어졌기 때문에 이전의 리스트나 튜플과는 다른 함수들을 사용한다. 키값만 추출하기, 키가 딕셔너리 안에 있는지 확인할 수 있는 함수들에 대해 알아보자.
- Key 리스트 만들기 : 딕셔너리명.keys()로 사용하며, 해당 딕셔너리의 키 값만 모아서 결과를 보여준다.
dic = {1 : 'a', 2 : 'b', 3 : 'c'} [입력값] dic.keys() [출력결과] dict_keys([1, 2, 3]) |
key를 출력 결과는 리스트의 고유 함수인 append, pop, insert 등을 사용할 수 없으므로 결과를 리스트처럼 사용하고 싶다면 아래 과정을 거쳐야 한다. 먼저 dic.keys()로 key를 추출하고 이걸 rslt에 입력, rslt를 list()안에 넣어주면 dict_keys 자료 형태에서 리스트 형태로 결과의 자료 형태가 변하게 된다. 그리고 확인해보면 우리가 생각하는 리스트 형태의 자료로 결과를 보여주는 것을 알 수 있다.
[입력값] rslt = dic.keys() rslt_l = list(rslt) rslt_l [출력결과] [1, 2, 3] |
- Value 리스트 만들기 : 딕셔너리명.values()로 사용하며, 해당 딕셔너리의 Value만 모아서 결과를 보여준다.
dic = {1 : 'a', 2 : 'b', 3 : 'c'} [입력값] dic.values() [출력결과] dict_values(['a', 'b', 'c']) |
앞의 key만 추출할 때와 동일하며, 결과만 value로 출력하기 때문에 자료 형태가 dict_values인 것과 출력 결과가 value로 나오는 차이 외에는 동일한 형태이다. 따라서 리스트로 변경하는 것도 dic.keys를 리스트로 변경한 것과 동일한 방법으로 진행하면 되니 예제는 생략한다.
- Key, Value 묶음으로 가져오기 : 딕셔너리명.items()로 사용하며, 해당 딕셔너리의 Key와 Value를 쌍으로 가져온다.
dic = {1 : 'a', 2 : 'b', 3 : 'c'} [입력값] dic.items() [출력결과] dict_items([(1, 'a'), (2, 'b'), (3, 'c')] |
- 딕셔너리 모두 지우기 : 딕셔너리명.clear()로 사용하며, 해당 딕셔너리의 모든 값을 지운다.
dic = {1 : 'a', 2 : 'b', 3 : 'c'} [입력값] dic.clear() [출력결과] {} |
- Key값 체크 : 'Key' in 딕셔너리명으로 사용하며, 해당 딕셔너리에 Key가 있는지 체크한다. Key가 있는 경우는 'True', 없는 경우는 'False'를 반환한다.
dic = {1 : 'a', 2 : 'b', 3 : 'c'} [입력값] Key가 딕셔너리에 있는 경우 1 in dic [출력결과] True [입력값] Key가 딕셔너리에 없는 경우 4 in dic [출력결과] False |
4) 딕셔너리 주의점
마지막으로 딕셔너리를 사용할 때 주의해야 하는 점이 있는데 특징에서 얘기한 바와 같이 Key의 중복이 있으면 안 된다는 것이다. Key를 중복으로 사용하는 경우 중복된 Key 중 하나만 남겨두고 무시되는데, 이때 중복된 값 중 하나를 가져오는데 그 값이 중복된 Key에 있는 어떤 Value를 가져오는지 알 수 없기 때문이다. 이점은 반드시 유의하여 사용해야 한다.
'방구석코딩 > 파이썬 기초문법' 카테고리의 다른 글
[파이썬 기초] 자료형 기능들 - 참/거짓, 저장, 복사, 메모리 삭제(del) (0) | 2022.05.25 |
---|---|
[파이썬 기초] 집합 자료형 - 교집합, 합집합, 차집합, ADD, UPDATE, REMOVE (0) | 2022.05.24 |
[파이썬 기초] 튜플 자료형 - 개념, 인덱싱, 슬라이싱 (0) | 2022.05.14 |
[파이썬 기초] 리스트 자료형③ - 함수(append, sort, index, insert, pop 등) (0) | 2022.05.12 |
[파이썬 기초] 리스트 자료형② - 연산자, 수정, 삭제(del) (0) | 2022.05.10 |
댓글