[Python] 딕셔너리 자료형

David Kim·2022년 10월 25일
0

Python

목록 보기
7/11

전사를 거꾸로 말해보자 사전이다. 사전을 영어로 하면? dictionary ㅋㅋㅋㅋ

딕셔너리(dictionary)란?

>>> a = {'name':'David', 'age':'20', 'location':'seoul'}

위의 예시를 보면 대응 관계를 나타낸 자료형이 있다. 이것을 연관배열(Associative array) 혹은 해시(Hash)라고 부른다. 파이썬에서는 이것을 딕셔너리(dictionary)라고 한다.

설명이 좀 복잡하게 들릴 수 있지만 쉽게 생각하자면 사전이랑 다를바가 없다.
'apple':'사과' 이렇게 보면 apple은 한국어로 사과라고 알려주듯이 딕셔너리는 KeyValue가 커플이 꼭 있는 자료형이다. 아까의 예제를 보면 'apple'이 key 그리고 '사과'가 value인 셈이다. 딕셔너리 같은 경우는 리스트나 튜플 처럼 순차적으로 해당 요솟값을 구하지 않고 무조건 Key를 통해 value를 얻는다.

그럼 딕셔너리는 어떻게 만들어?

아까 보여준 예시 처럼 key:value 형태로 이뤄줘야하고 {curly bracket}으로 감싸줘야한다. 여러가지의 형태가 있는데 아래 같이 가능하다.

>>> a = {1:'python'}
key를 정수 1 value를 'python' 윤석열 말고 문자열
>>> a = {'a': [1,2,3]}
value를 리스트에 넣을 수도 있다

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

딕셔너리 쌍 추가하기

>>> a = {1:'one'}
>>> a[2] = 'two' ⬅️ {2:'b'} 쌍 추가
>>> a
{1:'one', 2:'two'}
>>> a[3] = [1, 2, 3] ⬅️ {3:[1,2,3]} 리스트형 쌍 추가도 가능
>>> a
{1:'one', 2:'two', 3:[1, 2, 3]}

딕셔너리 요소 삭제하기

>>> del a[3] ⬅️ key가 3인 key:value 쌍을 삭제하라
>>> a
{1:'one', 2:'two'}

del 함수를 이용하면 del a[key]처럼 입력한 key에 포함이 된 {key:value}를 삭제

딕셔너리를 근데 왜 사용할까?

그 이유는 간단하다 여지껏 리스트나 튜플 같은 경우는 요소 값을 구하려하면
인덱싱이나 슬라이싱 기법을 사용했지만 딕셔너리는 key를 통하여 value를
구하면 끝이다. 또한 리스트나 튜플에서 a[1]는 두 번째 요소를 뜻하는게 아니라 key에 해당하는 1을 나타낸다. 말 그대로 심플하고 간단하다.

❗️하.지.만❗️ 딕셔너리 만들때도 주의해야 할 상황이 하나 있다.

>>> a = {1:'one', 1:'two'}
>>> a
{1:'two'}

위와 값이 key가 중복일 경우 딕셔너리에서는 어떤 key에 해당하는 value를 불러야 할지 몰라서 한 쌍이 무시가 된다. 그 외에도 key에 리스트는 사용 할 수 없지만 튜플은 사용이 가능하다. 그 이유는 key가 변하는 값이면 사용 할 수 없다 고로 튜플은 변하지 않는 값이기에 사용이 가능하다.

딕셔너리 관련 함수

key 리스트 만들기(keys)

>>> a = {'name':'daiquiri', 'main':'rum', 'glass':'1'}
>>> a.keys()
dict_keys(['name', 'main', 'glass'])

a.keys() 딕셔너리 a의 key만 모아서 dict_keys 객체를 돌려준다. 그렇다면 key들을 리스트로 변환을 하려면 어떻게 해야할까? 아래처럼 하면 된다.

>>> list(a.keys())
['name', 'main', 'glass']

Value 리스트 만들기(values)

>>> a.values()
dict_values(['daiquiri', 'rum', '1'])

Key, Value 쌍 얻기(item)

>>> a.items()
dict_items([('name','daiquiri'), ('main', 'rum'), ('glass', '1')])

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

>>> a.clear()
>>> a
{} ⬅️ 딕셔너리는 {curly bracket}로 표현한다.

key로 Value 얻기(get)

>>> a = {'name':'daiquiri', 'main':'rum', 'glass':'1'}
>>> a.get('name')
'daiquiri'
>>> a.get('main')
'rum'

그럼 만약 존재 하지 않는 Key의 Value를 구하려고 하면 어떻게 될까?

>>> a = {'name':'daiquiri', 'main':'rum', 'glass':'1'}
>>> print(a.get('nokey')) 방법 1
None
>>> print(a['nokey']) 방법 2
Traceback (most recent call last):
 File"<stdin>", line 1, in <module>
KeyError: 'nokey'

요렇게 두가지 방식이 있다. 참고로 None은 거짓이라는 뜻이다.

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

>>> a.get('x', '디폴트값')
'디폴트값'

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

>>> a = {'name':'daiquiri', 'main':'rum', 'glass':'1'}
>>> 'name' in a
True
>>> 'type' in a
False
profile
people rarely succeed unless they have fun in what they are doing

0개의 댓글