본문 바로가기
Python

[Python] dictionary (Mapping type) : basic

by ds31x 2023. 7. 11.

dictionary (dict)

Python에서 dictionary

  • key-value pair를 item으로 가지는
  • unordered
  • mutable
  • collection임.

set과 함께 curly bracket (or brace)를 사용하는데, empty dictionary가 바로 {}로 표현됨
(dictionary가 set보다 많이 이용되는 점이 반영된 듯...)


dictionary는 key와 value가 하나의 item에 가지고 있고, 해당 key를 통한 indexing이 가능함.

  • key는 set과 같이 unique 해야 한다.
  • key들은 set과 같이 unordered 임.

immutable object만이 key가 될 수 있음. 
mutable object는 hashable이지 않음.

https://ds31x.tistory.com/248

 

[CE] Hashing

Hashing많은 메모리를 사용(indexing으로)하는 댓가로 검색에 필요한 계산 시간을 단축시키는 검색기법 또는 해당 검색기법이 가능하도록 자료구조를 만드는 방법적절한 hash function과 collision 해결방

ds31x.tistory.com


seqeunce 계열의 list와 달리, dictionary는 key를 통한 search 속도가 set과 마찬가지로 매우 빠르다.

Python 3.5에서는
items()메서드를 for문 등에서 사용할 때
각 실행 때마다 실제로 order가 바뀌었음 (=unordered).
하지만 3.6 이후로는 고정된 순서로 반환됨.

주의할 건 해당 순서가 보장되는 게 아니라는 점이므로
순서가 필요하면 sorted 함수를 통한 처리가 필요하다.


add and remove

dictionary는 기본적으로 square bracket과 key를 통해 item에 접근할 수 있다.

  • dic[new_key]= value 와 같이, 새로운 키를 이용한 assignment를 통해 새로운 key-value pair가 추가됨.
  • dic[exist_key]= new_value 와 같이, 기존에 존재하는 키를 이용한 assignment는 해당 키에 해당하는 value를 새로운 값으로 교체함.
  • del dic[exist_key] 는 해당 키에 해당하는 key-value 쌍을 dictionary에서 제거한다. 만약 지정한 키가 없는 경우엔 KeyError가 발생한다.

in : membership operation

dictionary는 기본적으로 key를 통해 indexing되기 때문에, in membership operator을 통한 처리시 들에 대해 확인이 이루어짐.

list에 비해 고속으로 처리(hashing의 위력)되지만, sequence type들에 비해 보다 많은 메모리 사용량이 필요함. 

>>> dict = {'gachon': 100, 'bme': 200, 'elec': 300}
>>> 'bme' in dict
True
>>> 300 in dict
False

dictionary 의 메서드 정리

2023.07.11 - [Python] - [Python] Dictionary's methods

 

[Python] Dictionary's methods

비우기 dic.clear() Dictionary instance (or objecT) dic을 전부 비움. 모든 key-value 쌍들이 제거됨. 값 얻어오기 dic.get(key) key에 해당하는 키를 가지고 있는 value를 반환. 만약 없다면 None이 반환됨. dic[key]와 같

ds31x.tistory.com

 

'Python' 카테고리의 다른 글

[Python] list (sequence type) : summary  (0) 2023.07.12
[Python] set and frozenset  (0) 2023.07.12
[Python] Dictionary's methods  (0) 2023.07.11
[Python] 특정 점에서 직선에 수선의 발 구하기.  (0) 2023.07.11
[Python] atan2  (1) 2023.07.10