언어/PYTHON

[Python] 파이썬 딕셔너리

sebinChu 2023. 2. 13. 16:05

 

개요

 

'코드트리'에서 파이썬 딕셔너리를 공부한 내용이다

코드트리 자료가 생각보다 이해하기 정말 쉽게 되어있고, 중요한 부분을 잘 집어줘서 기록하고 두고두고 볼 예정

 


파이썬 딕셔너리(Python Dictionary) 

 

파이썬 딕셔너리는 검색/삽입/삭제에 유용한 HashMap 자료구조이다.

* HashMap: (key, value) 쌍으로 이루어져 있고, 순서와 상관없이 빠른 검색/삽입/삭제(시간복잡도 O(1))가 가능한 자료구조

 

 

딕셔너리 선언

파이썬 딕셔너리는 다음과 같이 선언한다.

d1 = dict()
d2 = {}
d3 = { 'apple' : 1, 'banana' : 2, 'grape' : 3 }

 

 


key와 value 

딕셔너리의 기본적인 구조는 dic_name[key] = value 이다. 

key 값을 통해 value 값을 찾기 위해 print(dict_name[key])사용한다. 

아래 예시를 통해 참고하자.

dic = dict()

d['A'] = 90
d['B'] = 80

if 'A' in d : 
	print(d['A']) # key를 통해 value 출력
    
 dic.pop('A') # key A 와 해당 value 제거

 

 


value 값으로 key 값 찾기

for k,v in d.items() :
        if i == k : 
            print(d[i])
        if i == v : 
            print(k)

 

d.items() 메소드를 통해 key, value 쌍을 튜플 객체로 받을 수 있다. 이를 for문으로 순회하면서 해당 값을 찾아주면 된다.

하지만 이 방법은 key, value를 찾을 때마다 굳이 dictionary의 모든 부분을 방문해야 하기 때문에 효율적이지 못하다.

 

 


예제/활용

  • add key value : (k,v) 쌍을 hashmap에 추가
  • remove key : hashpmap에서 (k,v) 쌍 제거
  • find key : key를 통해 (k,v) 쌍 찾기. 만약 key에 해당하는 key가 딕셔너리에 없다면, None 출력하기

 

n = int(input()) # 명령어의 개수
d = dict()
for _ in range(n):
    val = input().split()
    command = val[0]
    if command == 'add' : 
        d[val[1]] = val[2]
    elif command == 'find' : 
        if val[1] in d :
            print(d[val[1]])
        else:
            print('None')
    elif command == 'remove' : 
            d.pop(val[1])

 


 

기억할 것

  • key, value 쌍을 찾을 때에는 dic[k] if k in dic 와 같은 방법으로 찾는다.