본문 바로가기
필기 노트/Python 기초

[Python 기초] 기본 자료형 : 딕셔너리 (dictionary)

by misconstructed 2020. 6. 29.
728x90

이번에는 파이썬의 기본 자료형 중 딕셔너리(dictionary)에 대해서 알아보겠습니다! :)

딕셔너리 (dictionary)

딕셔너리는 대응관계를 나타내기 위해 사용합니다. 그러므로, Key-Valuye를 한 쌍으로 저장하게 됩니다.

딕셔너리는 연관배열(associative array) 또는 해시(Hash)라고도 불립니다.

딕셔너리는 앞서 배운 리스트(list)튜플(tuple) 처럼 순차적으로 요소 값을 접근하는 것이 아니라, 

key 값을 통해서 value 값에 접근하는 방식으로 구성됩니다.

딕셔너리 생성

>>> d = {"key1" : "value1", "key2" : "value2"}

딕셔너리를 생성할 때 주의하셔야 하는 점은, key 값에는 변하지 않는 값을 사용해야 한다는 것입니다.

그러므로 key 값으로 변하지 않는 튜플(tuple)은 사용 가능하지만, 변할 수 있는 리스트(list)는 사용할 수 없습니다.

반면에 value 값으로는 그 어떠한 값도 사용할 수 있습니다.

딕셔너리 연산

1. 값 삽입

>>> d = {"key1":"value1"}
>>> d["key2"] = "value2"
>>> d
# {"key1":"value1", "key2":"value2"}

딕셔너리에 값을 삽입할 때 주의하셔야 할 것은 key 값이 중복되면 마지막으로 삽입한 값을 제외한 모든 value 값을 무시한다는 것입니다.

딕셔너리에는 동일한 key 값이 2개 이상 존재할 수 없습니다.

2. 값 삭제

딕셔너리에서 값 삭제는 리스트(list)와 튜플(tuple)과 동일하게 del 을 사용합니다.

key 값만 삭제되는 것이 아니라, key-value 쌍이 함께 삭제됩니다.

>>> d = {"key1":"value1", "key2":"value2"}
>>> del d["key1"]
>>> d
# {"key2":"value2"}

3. value 값 구하기

딕셔너리에서는 value 값을 구하는 두가지 방법이 있습니다.

첫 번째 방법으로는, key 값에 직접 접근해서 value 를 구하는 방법입니다.

해당 방법을 사용했을 때, key 값이 존재하지 않는 경우, key 오류가 발생합니다.

>>> d = {"k1ey1", "value1"}
>>> d["key1"]
# "value1"
>>> d["key2"]
# key 오류

두 번째 방법으로는 get() 함수를 사용하는 방법입니다.

get() 함수의 매개변수로 key 값을 전달하면, 해당 key 값의 value 값을 반환합니다.

첫 번째 방법과 다른 점은, key 값이 없는 경우 None을 반환한다는 점입니다.

또한 key 값이 없는 경우 None 대신 반환할 기본 값을 지정할 수 있습니다.

>>> d = {"key1":"value1"}
>>> d.get("key1")
# "value1"
>>> d.get("key2")
# None
>>> d.get("key2", "hello world")
# "hello world"

4. 기타 함수

  1. keys() : 해당 딕셔너리의 key 값들만 모아서 dict_keys 객체를 반환합니다.
  2. values() : 해당 딕셔너리의 value 값들만 모아서 dict_values 객체를 반환합니다.
  3. items() : 해당 딕셔너리의 (key, value) 튜플을 원소로 가지고 있는 dict_items 객체를 반환합니다.
  4. clear() : 딕셔너리의 모든 key-value 쌍을 지웁니다. 빈 딕셔너리가 반환됩니다.
  5. "key" in d : "key" 값을 d 딕셔너리가 key 값으로 보유하고 있는지 확인합니다. 보유하고 있는 경우 True, 보유하지 않는 경우 False 를 반환합니다.
※ dict_keys, dict_values, dict_items 객체
파이썬 2.7 까지는 리스트(list)를 결과로 반환했습니다.
하지만 메모리 낭비를 줄이기 위해 이후 버전부터는 dict_keys, dict_values, dict_items 객체를 결과로 반환하게 되었습니다.
리스트(list)와 사용법은 유사하지만, 리스트(list)의 고유 함수인 append(), insert(), pop(), remove(), sort() 는 사용할 수 없습니다.
결과를 리스트로 사용하고 싶으면 list(d.keys()) 와 같은 방법으로 사용할 수 있습니다.

 

>>> d = {'k1':'v1', 'k2':'v2', 'k3':'v3'}
>>> d.keys()
# dict_keys(['k1', 'k2', 'k3'])
>>> d.values()
# dict_values(['v1', 'v2', 'v3'])
>>> d.items()
# dict_items([('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3')])
>>> list(d.keys())
# ['k1', 'k2', 'k3']

 


 

해당 게시물은 <점프 투 파이썬>을 읽고 제 나름대로 정리한 내용입니다!

더 구체적인 정보나, 추가적인 내용을 확인하고 싶으시면 <점프 투 파이썬>을 참고해주시기 바랍니다.

잘못된 부분 지적이나 피드백은 언제든지 환영입니다.

감사합니다 :)

 

 

 

728x90

댓글