본문 바로가기

파이썬/사용법

[python] 파이썬 딕셔너리(Dictionary) 완전 정복 - 선언부터 반복문 활용

안녕하세요! 이번 글에서는 파이썬의 딕셔너리(DICTIONARY)에 대해서 알아보려고 합니다.

숫자 범위로 인덱싱하는 sequence data type 과는 달리 dictionary 는 immutable 한 type인 key로 인덱싱 됩니다 

오늘은 딕셔너리의 선언과 인덱싱, looping technique을 중심으로 글을 작성해 보겠습니다.

 

1) 딕셔너리 선언 

딕셔너리 선언은 name = {key1:value1,key2:value2} 이런 식으로 생성합니다.

name = {} 

빈 딕셔너리의 선언입니다.

>>> a = {}
>>> type(a)
<class 'dict'>

2) 딕셔너리 선언시 주의점

key 는 immutabledata type 으로 구성되어야 하며

immutable한 타입안에 mutable한 타입이 있다면 그것 또한 불가합니다,

>>> a = {(["a","b","c"]):1}
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
>>>

dictionary는 key: value 한 쌍씩 match 되는것이 best입니다.

key는 uniuque한 data여야한다고 말하고있습니다.

 

3) 딕셔너리 인덱싱

숫자 범위로 indexing 하는 sequence data type과는 달리 dictionary는 immutable 한 type인 key로 indexing 합니다.

>>> mydict = {"a":1,"b":2}
>>> mydict["a"]
1

 

4) 딕셔너리 요소 삭제하기

del 키워드를 이용하여 삭제를 해줍니다

>>> mydict = {"a":1,"b":2,"c":3}
>>> del mydict["a"]
>>> mydict
{'b': 2, 'c': 3}

4-1) 삭제시에 주의할 점 

>>> mydict = {"a":1,"b":2,"c":3}
>>> del mydict["d"]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'd'

특정 키가 존재하는지 여부를 확인한 후 삭제하거나, 없는 키를 삭제하려고 하면 KeyError가 발생하므로 주의해야 합니다. 따라서 삭제 전에 키의 존재 여부를 확인하는 방법도 함께 고려하는 것이 좋습니다.

예를 들어 'b' in my_dict:와 같이 키의 존재 여부를 확인하고 삭제를 진행할 수 있습니다.

 

5) for문에서의 사용법

>>> mydict = {"a":1,"b":2,"c":3}
>>> for i in mydict:
...     print(i)
...
a
b
c

for 문에서 바로 사용하면 key만 나오는 것을 알 수 있습니다.

 

5-1) key와 value 동시에 for문에서 활용하기  dict.items()

key 와 value 동시에 for문에서 활용하고 싶다면 dict.items()를 활용하는 것이 좋습니다.

>>> for alphabet,num in mydict.items():
...     print(alphabet, num)
...
a 1
b 2
c 3

5-2) dict comprehension

>>> square = {x : x**2 for x in range(1,10)}
>>> square
{1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}

dictionary도 comprehension을 지원합니다.

 

정리) 

딕셔너리는 name = {key1:value1,key2:value2} 로 assignment 한다.

딕셔너리는 숫자범위로 인덱싱하는 sequence type과 달리 딕셔너리는 immutable한 type인 key로 인덱싱한다.

 

key는 immutable한 값이 들어간다.

dict내의 data는 Del 키워드를 이용해서 삭제한다.

없는 key 값으로 삭제하려하면 keyError가 발생한다.

그래서 삭제하기전에 key in dict 로 확인해보는 것이 좋다.

for looping 할때 key를 활용할 수 있고

key value로 활용하고싶을 때는 dict.items()를 이용한다.

dict comprehension을 지원한다.

 

마치면서)

파이썬 공식 문서에서 딕셔너리와 예제를 찾아보시면 더욱 자세한 정보를 얻을 수 있습니다. 

다음 글에서도 유용한 파이썬 팁과 기능을 소개하도록 하겠습니다

감사합니다.