이번 글에서는 딕셔너리 자료형에 대해서 알아보도록 하겠습니다.
딕셔너리
이전에 배웠던 리스트, 튜플들은 여러개의 데이터들을 한 곳에 저장하는 용도로 사용했습니다.
딕셔너리도 기본적으로는 이와 동일한 용도로 사용됩니다.
다만 두 자료형과 다른점은 딕셔너리는 key와 value가 한 쌍이 되어 이루어진다는 것입니다.
예를 들어 어떤 한 사람이 있다고 가정해봅시다.
이 사람에게는 이름, 나이, 성별, 주소 등등 여러가지 정보가 있을 것입니다.
이때 이사람의 이름이 홍길동, 나이가 20세라고 한다면 '이름'과 '나이'가 실질적인 이 사람의 정보, Value인
'홍길동'과 '20세'를 나타내는 Key가 되는 것입니다.
이 딕셔너리의 특이한 점은 리스트와 튜플이 인덱싱으로 값을 가져오는데 반해 Key값으로 Value를 가져온다는 점입니다.
딕셔너리의 기본적인 사용법을 코드를 통해 확인해봅시다.
dic1 = {"name":"홍길동", "age":20}
print("제 이름은 %s이고, 나이는 %d세 입니다." %(dic1["name"], dic1["age"]))
딕셔너리에 요소를 추가할 때에는 먼저 Key로 사용할 값을 적어주신 뒤, 콜론(:)을 적고 Value로 사용할 값을 적어주시면 됩니다.
위의 코드에선 dic1이라는 딕셔너리에서 name라는 Key와 홍길동이라는 Value를 연결하고,
age라는 Key와 20이라는 Value를 연결한것을 볼 수 있습니다.
이렇게 Key와 Value가 연결된 한 쌍이 딕셔너리에서 하나의 요소가 되는 것입니다.
이 딕셔너리의 요소는 문자열, 정수뿐만 아니라 리스트, 튜플, 그리고 딕셔너리도 들어갈 수 있습니다.
dic1 = {"name":"홍길동", "age":{"hi":20}}
print("제 이름은 %s이고, 나이는 %d세 입니다." %(dic1["name"], (dic1["age"])["hi"]))
이렇게 코드를 변경하면, 딕셔너리의 요소에 다른 딕셔너리를 넣어서 사용할 수 있습니다.
딕셔너리 쌍 추가
그럼 다음으로 기존의 딕셔너리에 쌍을 추가하고, 삭제하는 법에 대해 알아보도록 하겠습니다.
먼저 딕셔너리에 새로운 쌍을 추가하려면 다음과 같이 해주시면 됩니다.
dic1 = {"name":"홍길동", "age":{"hi":20}}
dic1[2] = "Hello"
print(dic1)
리스트와 튜플의 경우에는 위와 같이 코드를 작성하면, 해당 객체의 3번째 요소에 새로운 값 하나를 추가하는 식으로 동작합니다.
하지만 딕셔너리는 위에서 말했다시피 인덱싱을 하는 것이 아니기 때문에 해당 객체의 3번째 요소가 아니고,
Key값을 2로, Value를 "Hello"로 해서 새로운 한 쌍을 딕셔너리에 추가하는 동작을 합니다.
이때 새로운 요소는 자동적으로 딕셔너리의 가장 끝에 추가됩니다.
딕셔너리 쌍 삭제
딕셔너리 내에 있는 쌍, 즉 요소를 삭제하기 위해서는 이전부터 사용했던 del함수를 사용합니다.
dic1 = {"name":"홍길동", "age":{"hi":20}}
dic1[2] = "Hello"
print(dic1)
del(dic1["name"])
print(dic1)
위와 같이 코드를 작성해주시면, dic1이라는 딕셔너리에서 Key가 "name"인 요소를 찾아서 그 쌍을 삭제합니다.
딕셔너리 사용 시 주의사항
이러한 딕셔너리를 사용할 때에는 몇 가지 주의해야 할 점들이 있습니다.
먼저, 딕셔너리 내의 Key값을 중복되게 사용해서는 안됩니다.
만약 Key값이 중복되면, 그중에서 하나의 요소만 사용할 수 있게 되고, 나머지 요소는 사용할 수 없게 됩니다.
이때 사용할 수 있는 쌍은 딕셔너리에 가장 최근에 추가된 쌍, 즉 딕셔너리의 맨 끝에 있는 쌍뿐입니다.
dic1 = {"age":15, "age":16, "age":17, "age":60}
print(dic1["age"])
다음으로 딕셔너리의 Key에 올 수 있는 값에 대해서 알아봅시다.
위에서 Value에는 리스트, 튜플, 딕셔너리 등이 올 수 있다고 했었는데, 반면 Key에는 어떠한 제약조건이 있습니다.
그것은 Key값이 변하는 값이냐, 변하지 않는 값이냐 라는 것입니다.
예를 들어 리스트는 리스트 내부의 값을 얼마든지 바꿀 수 있기 때문에 딕셔너리의 Key로 사용할 수 없습니다.
반면 튜플의 경우 튜플을 한 번 만들면 내부 요소들의 값을 변경할 수 없기 때문에, 딕셔너리의 Key로 사용할 수 있습니다.
동일한 이유로 딕셔너리도 Value는 상관없지만, Key값으로는 사용할 수가 없습니다.
dic1 = {[1, 2, 3]:10, {"key":"value"}:20}
print(dic1)
딕셔너리를 사용할 때에는 위와 같은 주의점 들에 신경쓰면서 사용하시길 바랍니다.
이번 글은 이 정도로 마치도록 하겠습니다.
감사합니다.
'프로그래밍 언어 > 파이썬' 카테고리의 다른 글
파이썬 15. set(집합) (0) | 2020.10.06 |
---|---|
파이썬 14. 딕셔너리 관련 함수 (0) | 2020.10.05 |
파이썬 12. 튜플 (0) | 2020.09.23 |
파이썬 11. 리스트 관련 함수 (0) | 2020.09.22 |
파이썬 10. 리스트 (0) | 2020.09.21 |