TIL

TIL(20.06.19) - Python 기본(Python 자료형 - Dict)

sincerely10 2020. 6. 19. 14:51
반응형

이어서 앞으로의 학습에서 기본자료형 중 가장 많이 활용될 것 같은 Dict 형 입니다.

1. 개요

Dict라는 단어에서 처럼 사전(Dictionary) 형태를 갖고 있습니다.
List, Tuple, Set은 약간의 차이가 있었지만, 기본적으로 Value를 저장하는 형태였습니다.
그러나 dict형은 이와 다르게 Key - Value를 모두 저장하는 형태입니다.

사전이라는 형태처럼  'gift'(key)를 주면 '선물'(Value)이라는 단어를 return 해줍니다.

2. 선언과 타입

바로 코드를 통해 확인해보겠습니다.

>>> mydict = {'a': 1, 'b': 2, 'c': 3}
>>> mydict
{'a': 1, 'b': 2, 'c': 3}

# key는 immutable(변하지 않는) 값만 사용가능
>>> mydict = {'a': 1, 'b': 2, d: 3}
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'dict'

# 변수도 등록가능
>>> c= 'another_key'
>>> mydict = {'a': 1, 'b': 2, c: 3}
>>> mydict
{'a': 1, 'b': 2, 'another_key': 3}

>>> c = 'another key'
>>> mydict
{'a': 1, 'b': 2, 'another_key': 3}
>>> mydict = {'a': 1, 'b': 2, c: 3}
>>> mydict
{'a': 1, 'b': 2, 'another key': 3}

:(Colone)을 기준으로 앞에는 key 뒤에는 value가 주어집니다.
특징으로 key는 변하지 않는(immutable) 값만 사용 가능합니다.
만약 사전에 선언되지 않는 d라는 값을 사용한다면 에러가 발생한다.

또한, 기존에 변수를 통해 key값을 정했으면 변하지 않는다.(단락 4)
변수를 바꾼다고 key값이 달라지지 않는다.

3. 특징

a. key는 중복되지 않습니다.(중복인 경우 마지막 key의 value가 적용됨)
b. key를 통해 index 처럼 접근 가능(변경도)
c. 순서가 없다.

4. Method

Dict 형의 method는 다음과 같습니다.
여기서는 주요 method만 다뤄 보겠습니다.

['__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', \
'__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', \
'__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', \
'__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', \
'__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear',\
'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']

4.1 items & keys & values

dict형 자료구조의 주요 method 가운데 비슷한 items, keys, values가 있습니다.
key-value를 한 번에 보여주는 items(), 그리고 각각 key와 value를 나타내는 keys()와 values()가 있습니다.

>>> mydict.items()
dict_items([('a', 1), ('b', 2), ('another key', 3)])
>>> mydict.keys()
dict_keys(['a', 'b', 'another key'])
>>> mydict.values()
dict_values([1, 2, 3])

# items key-value pair 받기
>>> for i,j in mydict.items():
...     print(i, j)
... 
a 1
b 2
c 3

만약 key와 value 모두 받아야 한다면 어떻게 해야할까요?
위 코드와 같이 items에서 각각을 받을 수 있습니다.

4.2 get

dict 자료구조에서 존재하지 않는 key에 접근하면 에러가 발생합니다.
없으면 입력한 key-value에 value를 return 하고,
입력해주는 key가 있다면 해당하는 value를 return 해주는 Method인 get이 있습니다.

>>> mydict
{'a': 1, 'b': 2, 'c': 3}

# 입력한 key가 있는 경우
>>> mydict.get('a',5)
1
>>> mydict
{'a': 1, 'b': 2, 'c': 3}

# 입력한 key가 없는 경우
>>> mydict.get('r',5)
5
>>> mydict
{'a': 1, 'b': 2, 'c': 3}

이미 key가 있으면 두 번째 단락과 같이 1이라는 value를 return 해줍니다.
만약 없는 key인 'r'과 value 5를 return 해줍니다.

반응형