Python에는 dict라는 class가 있습니다. dict는 해싱을 기반으로 데이터들을 관리해주는 자료구조로, (key, value) 쌍 형태로 값을 동시에 저장하는 형태입니다. 해싱을 기반으로 하고 있기 때문에, 삽입, 삭제, 탐색 등 모든 함수의 시간복잡도가 전부 입니다. 매우 빠른 성능을 보장하지만, 구조 특성상 들어온 값들간의 순서를 나타내주지 못합니다. (이 경우, OrderedDict 클래스를 사용하면 들어온 값들의 순서도 보장할 수 있습니다.)
dict에서 키를 바탕으로 값을 가져올 수 있는 방법은 크게 두 가지입니다.
dict의 get 메서드를 이용하는 방법과,
# Syntax: dictionary.get(keyname, value)
d = {1: "apple", 2: "banana", 3: "grape"} # 딕셔너리 생성 및 초기화
print(d.get(1)) # "apple"
print(d.get(0)) # None
print(d.get(4, 0)) # 0
[ ]를 이용해서 키를 명시해주는 방법이 바로 그것입니다.
# Syntax: dict[key]
d = {1: "apple", 2: "banana", 3: "grape"} # 딕셔너리 생성 및 초기화
print(d[1]) # "apple"
print(d[0]) # KeyError
둘 다 동일하게 동작하지만, get 메서드의 경우 두번째 인자로 키가 존재하지 않을 때 리턴할 default값을 명시해줄수 있고, get 메서드를 사용하는 경우 KeyError가 발생하지 않는다는 점이 다릅니다.
dict에서 키를 바탕으로 값을 지울 수 있는 방법 역시 크게 두 가지입니다.
dict의 pop 메서드를 이용하는 방법과,
d = {1: "apple", 2: "banana", 3: "grape"} # 딕셔너리 생성 및 초기화
d.pop(1) # 딕셔너리에서 키가 1인 값 삭제 후 값 반환
print(d) # {2: "banana", 3: "grape"}
d.pop(0) # 0이란 key는 존재하지 않으므로, KeyError 발생
del 예약어를 이용하는 방법이 바로 그것입니다.
d = {1: "apple", 2: "banana". 3: "grape"} # 딕셔너리 생성 및 초기화
del d[1] # 딕셔너리에서 키가 1인 값 삭제
print(d) # {2: "banana". 3: "grape"}
del d[0] # 0이란 key는 존재하지 않으므로, KeyError 발생
둘 다 똑같은 동작을 하지만, 지운 key의 value값을 사용하려면 pop 메서드를, 나머지 경우엔 del 예약어를 사용합니다.
또한, pop 메서드의 두번째 인자로 default 값을 명시해줄 수 있는데, 값을 명시해주면 키 값이 존재하지 않더라도 default 값을 반환하게 됩니다. 이 경우, 지울 키 값이 없어도 KeyError가 발생하지 않습니다.
d = {1: "apple", 2: "banana". 3: "grape"}
# KeyError 발생 X
d.pop(4, None)
댓글