프로그래밍 언어/파이썬

파이썬 13. 딕셔너리

닉네임못짓는사람 2020. 9. 28. 17:48
반응형

이번 글에서는 딕셔너리 자료형에 대해서 알아보도록 하겠습니다.

 

딕셔너리


이전에 배웠던 리스트, 튜플들은 여러개의 데이터들을 한 곳에 저장하는 용도로 사용했습니다.

딕셔너리도 기본적으로는 이와 동일한 용도로 사용됩니다.

다만 두 자료형과 다른점은 딕셔너리는 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