본문 바로가기
방구석코딩/파이썬 기초문법

[파이썬 기초] 딕셔너리(dictionary) 자료형- 특징, 사용법

by 석세상 2022. 5. 16.
반응형

딕셔너리는 키(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를 가져오는지 알 수 없기 때문이다. 이점은 반드시 유의하여 사용해야 한다.

 

728x90
반응형

댓글