딕셔너리 자료형

5230 단어 파이썬파이썬

딕셔너리란?

🔑 딕셔너리는 Key와 Value를 한 쌍으로 갖는 자료형이다. 예를 들어 Key가 "baseball"이라면 Value는 "야구"가 될 것이다.

🔥 딕셔너리는 리스트나 튜플처럼 순차적으로 해당 요솟값을 구하지 않고 Key를 통해 Value를 얻는다. 이것이 바로 딕셔너리의 가장 큰 특징이다.
baseball이라는 단어의 뜻을 찾기 위해 사전의 내용을 순차적으로 모두 검색하는 것이 아니라 baseball이라는 단어가 있는 곳만 펼쳐 보는 것이다.

딕셔너리는 어떻게 만들까?

🔴다음은 기본 딕셔너리의 모습이다.

{Key1:Value1, Key2:Value2, Key3:Value3, ...}

♤ Key와 Value의 쌍 여러 개가 {}로 둘러싸여 있다. 각각의 요소는 Key : Value 형태로 이루어져 있고 쉼표(,)로 구분되어 있다.
♠ Key에는 변하지 않는 값을 사용하고, Value에는 변하는 값과 변하지 않는 값 모두 사용할 수 있다.

🟠 딕셔너리의 예

dic = {'name':'pey', 'phone':'01234567', 'birth':'1224'}

🟡 다음 예는 Key로 정수 값 1, Value로 문자열 'hi'를 사용한 예이다.

a = {1: 'hi'}

🟢 또한 다음 예처럼 Value에 리스트도 넣을 수 있다.

a = {'a' : [1, 2, 3]}

딕셔너리 쌍 추가, 삭제하기

🔴 딕셔너리 쌍 추가하기

a = {1: 'a'}
a[2] = 'b'
print(a)


{1: 'a'} 딕셔너리에 a[2] = 'b'와 같이 입력하면 딕셔너리 a에 Key와 Value가 각각 2와 'b'인 2:'b'라는 딕셔너리 쌍이 추가된다.

🟠 딕셔너리 요소 삭제하기

a = {1: 'a', 2:'b', 'name':'pey', 3:[1, 2, 3]}
del a[1]
print(a)


del 함수를 사용해서 del a[key]처럼 입력하면 지정한 Key에 해당하는 {key:value}쌍이 삭제된다.

딕셔너리를 사용하는 방법

🔴 딕셔너리에서 Key 사용해 Value 얻기

a = {'pey': 10, 'julliet': 99, 1:'a', 2:'b'}
print(a['pey'])
print(a['julliet'])
print(a[1])
print(a[2])


리스트나 튜플, 문자열은 요솟값을 얻고자 할 때 인덱싱이나 슬라이싱 기법 중 하나를 사용했다. 하지만 딕셔너리는 단 한 가지 방법뿐이다. 바로 Key를 사용해서 Value를 구하는 방법이다.
위 예에서 'pey'라는 Key의 Value를 얻기 위해 a['pey']를 사용한 것처럼 어떤 Key의 Value를 얻기 위해서는 딕셔너리변수이름[Key]를 사용한다.

🟠 딕셔너리 만들 때 주의할 사항

🌝 먼저 딕셔너리에서 Key는 고유한 값이므로 중복되는 Key 값을 설정해 놓으면 하나를 제외한 나머지 것들이 모두 무시된다는 점을 주의해야 한다.

🌞 또 한 가지 주의해야 할 사항은 Key에 리스트는 쓸 수 없다는 것이다. 하지만 튜플은 Key로 쓸 수 있다. 딕셔너리의 Key로 쓸 수 있느냐 없느냐는 Key가 변하는 값인지 변하지 않는 값인지에 달려 있다. 리스트는 그 값이 변할 수 있기 때문에 Key로 쓸 수 없다.
따라서 딕셔너리의 Key 값으로 리스트를 사용할 수 없음은 당연하다. 단 Value에는 변하는 값이든 변하지 않는 값이든 상관없이 아무 값이나 넣을 수 있다.

딕셔너리 관련 함수들

🔴 Key 리스트 만들기(keys)

▷ a.keys()는 딕셔너리의 a의 key만을 모아서 dict_keys 객체를 돌려준다.

a = {'name':'pey', 'phone':'01234567', 'birth':'1224'}
print(a.keys())


▶ dict_keys 객체를 리스트로 변환하려면 다음과 같이 하면 된다.

a = {'name':'pey', 'phone':'01234567', 'birth':'1224'}
print(list(a.keys()))

🟠 Value 리스트 만들기(values)

a = {'name':'pey', 'phone':'01234567', 'birth':'1224'}
print(a.values())


key를 얻는 것과 마찬가지 방법으로 Value만 얻고 싶다면 values 함수를 사용하면 된다. values 함수를 호출하면 dict_values 객체를 돌려준다.

🟡 Key, Value 쌍 얻기(items)

a = {'name':'pey', 'phone':'01234567', 'birth':'1224'}
print(a.items())


items 함수는 Key와 Value의 쌍을 튜플로 묶은 값을 dict_items 객체로 돌려준다. dict_values 객체와 dict_items 객체 역시 dict_keys 객체와 마찬가지로 리스트를 사용하는 것과 동일하게 사용할 수 있다.

🟢 Key:Value 쌍 모두 지우기(clear)

a = {'name':'pey', 'phone':'01234567', 'birth':'1224'}
a.clear()
print(a)


clear 함수는 딕셔너리 안의 모든 요소를 삭제한다. 빈 리스트를[], 빈 튜플을 ()로 표현하는 것과 마찬가지로 빈 딕셔너리도 {}로 표현한다.

🔵 Key로 Value얻기(get)

📌 get(x) 함수는 x라는 Key에 대응되는 Value를 돌려준다. 앞에서 살펴보았듯이 a.get('name')은 a['name']을 사용했을 때와 동일한 결괏값을 돌려받는다.
다만 존재하지 않는 키로 값을 가져오려고 할 경우 a['name']은 Key 오류를 발생시키고 a.get('name')은 None을 돌려준다는 차이가 있다.

a = {'name':'pey', 'phone':'01234567', 'birth':'1224'}
print(a.get('name'))
print(a.get('phone'))


❗ 또한, 딕셔너리 안에 찾으려는 Key 값이 없을 경우 미리 정해 둔 디폴트 값을 대신 가져오게 하고 싶을 때에는 get(x, '디폴트 값')을 사용하면 편리하다.

a = {'name':'pey', 'phone':'01234567', 'birth':'1224'}
print(a.get('foo','bar'))


🔑 a 딕셔너리에는 'foo'에 해당하는 값이 없다. 따라서 디폴트 값인 'bar'를 돌려준다.

🟣 해당 Key가 딕셔너리 안에 있는지 조사하기(in)

a = {'name':'pey', 'phone':'01234567', 'birth':'1224'}
print('name' in a)
print('email' in a)


'name' 문자열은 a 딕셔너리의 Key 중 하나이다. 따라서 'name' in a를 호출하면 참(True)을 돌려준다. 반대로 'email'은 a 딕셔너리 안에 존재하지 않는 Key이므로 거짓(False)을 돌려준다.

좋은 웹페이지 즐겨찾기