목차
1. dictionary란?
2. dictionary의 사용법
3. 왜 map이 아닌 딕셔너리인가?
4. 주의할 점
1. dictionary란?
key와 value를 통해 대응관계를 나타내는 자료형
프로그래밍을 하다보면 여러 언어에서 이름 = "홍길동", 나이 =20 등과 같이 특정한 키와 키가 가르키는 값을 표현하는 방법이 많이 사용된다. 주로 hash 또는 map이라고 하지만 파이썬에서는 dictionary라고 한다.
dictionary는 파이썬에서도 자주 사용되는 데이터이니 잘 알아두도록 하자.
2. dictionary의 사용법
1) 딕셔너리 선언하기
딕셔너리는 key와 value로 이루어져 있다고 했다. 따라서 선언할 때는 기본적으로 사용할 key와 value를 선언해주어야 한다.
변수명 = {
key1 : value1,
key2 : value2
}
ex)
# 빈 dict 선언
dict = {}
# 초기 데이터 선언
dict = {
name : "홍길동",
age : 20
}
2) 딕셔너리 key와 value 추가 및 삭제하기
딕셔너리 형태로 관리한 데이터를 처음부터 안다면 선언할 때 데이터를 포함시키면 되지만 프로그래밍을 할 때 여러 데이터를 다루다 보면 딕셔너리 형태로 관리해야할 데이터를 정확히 알 수 없는 경우가 있다. 그럴 경우 이미 만들어진 dict데이터에 추가하거나 삭제할 수 있어야 한다.
# 추가하기
dict[key] = value
# ex)
dict = {}
dict[이름] = "홍길동"
파이썬에서는 딕셔너리에 데이터를 추가할 때 점 표기법(.)을 지원하지 않는데 이는 점 표기법은 클래스 또는 객체의 속성에 대한 접근을 의미하지만 dict의 데이터는 속성보다는 해당 딕셔너리가 가지고 있는 item을 의미하는 것에 가깝다. 딕셔너리 자체가 객체이기 때문에 내부 메서드나 속성이 존재하여 혼란이 올 수 있어 점 표기법이 아닌 대관호 표기법으로 추가할 수 있도록 되어있다.
dict = {
이름 : "홍길동",
나이 : 20
}
# 삭제하기
# 방법1
value = dict.pop(key,key가 없을시 대체할 반환값)
# 방법2
del dict[key]
키를 삭제하는 방법은 두가지가 있는데 pop메서드와 del 키워드를 사용하는 것이다.
pop 메서드의 경우 key를 삭제하고 삭제하는 키의 값을 반환한다. 첫번째 인자에 삭제할 key를 지정하고 두번째 인자에 key가 없을 때 반환할 값을 지정하는데 이 때 key가 없는데 두번째 인자 또한 지정하지 않는다면 에러가 발생한다.
del 키워드를 사용하는 경우 지정하는 키를 삭제한다. 반환값은 없으며 key가 없음에도 삭제를 하려하는 경우 에러가 발생한다.
key를 삭제하는 두 방법의 차이는 key의 유무에 대한 예외처리와 반환값의 유무다. pop은 key는 키가 없을 경우에 대한 예외처리가 수월하며 key를 삭제하면 그 값을 반환하여 사용할 수 있기 때문에 필요한 경우 값을 사용할 수 있다. 하지만 del은 예외처리가 힘들고 반환값이 없어 단순 삭제할 때 사용한다.
3. 왜 map이 아닌 딕셔너리인가?
파이썬의 딕셔너리는 다른 프로그래밍 언어에서는 map이나 hash이름으로 사용된다. 그런데 왜 파이썬만 이름이 다른 것일까?
이는 파이썬의 철학과 특정 함수와 구분하기 위함이다.
파이썬은 초보자도 읽기 쉬운 문법을 도입하였다. 이로 인해 dictionary개념을 도입하였는데 dictionary는 사전이라는 뜻의 영단어로서 사전은 주로 단어와 그 단어가 갖는 의미로 이루진 것이다. 따라서 dictionary는 key와 value로 이루어진 데이터를 가장 잘 표현한 것이다.
또한 반복가능한 리스트같은 데이터를 통해 특정 연산을 수행할 수 있도록 하는 map함수가 이미 파이썬에 있기 때문에 map이라는 이름을 사용하기 되면 혼란이 발생할 수 있기에 구분할 필요가 있다.
4. 주의할 점
1) 키는 중복을 허용하지 않는다.
딕셔너리에서 key는 고유한 값으로 선언할 때 같은 키가 여러개 있더라도 하나만 접근할 수 있고 key통해 값을 변경하게 되면 하나만 변경이 이루어진다.
2) 리스트는 key로 사용할 수 없다.
key는 고유한 값이라고 했다. 고유한 값은 변경이 되면 안된다. list는 언제든 변할 수 있는 데이터이기 때문에 key사용할 수는 없다. 하지만 튜플은 변경을 허용하지 않는 데이터이기 때문에 key 사용이 가능하다
참고자료
02-5 딕셔너리 자료형
사람은 누구든지 "이름" = "홍길동", "생일" = "몇 월 며칠" 등과 같은 방식으로 그 사람이 가진 정보를 나타낼 수 있다. 파이썬은 영리하게도 이러한 대응 관계를 나타낼 …
wikidocs.net