[python] 자료형 – 3. 딕셔너리

[python] 자료형 – 3. 딕셔너리

이번 글에서는 딕셔너리(Dictionary)에 대해 알아보겠습니다.

딕셔너리를 단어 그 자체로 해석하면 사전이란 의미입니다.
사전적 의미와 비슷하게 파이썬에서도 딕셔너리는 Key와 Value가 쌍을 이루며 저장이 되는 자료형을 말합니다.

기본 형태

기본적인 딕셔너리의 형태는 아래와 같습니다.

{key:value, key:value, key:value, ...}

중괄호{}를 사용하며 key와 value가 쌍을 이루고 쉼표(,)로 구별되는 형태입니다.
이제 딕셔너리 사용법에 대해 알아보겠습니다. 아래는 딕셔너리를 생성하는 코드입니다.

dict_apple = {"eng":"apple", "kor":"사과", "jp":"りんご"}
dict_number = {1:"일", 2:"이", 3:"삼"}
dict_minsoo = {"이름":"민수", "나이":20, "성별":"남", "번호":"010-1111-1111"}

print(dict_apple)
print(dict_number)
print(dict_minsoo)

value에는 리스트가 입력 되는 것도 가능합니다.

dict_number = {1:["일", "하나", "첫번째"], 2:["이", "둘", "두번째"], 3:["삼", "셋", "세번째"]}
print(dict_number)

특정 Key의 Value 가져오기

value값을 가져오기 위해 아래와 같이 대괄호[]에 key를 입력하면 됩니다.

dict_apple = {"eng":"apple", "kor":"사과", "jp":"りんご"}
print(dict_apple["eng"])
print(dict_apple["kor"])
print(dict_apple["jp"])

Key, Value 입력

새로운 key와 value 쌍을 만드려면 아래와 같이 대괄호[]에 key를 입력하고 value를 대입하면 됩니다.

dict_minsoo = {"이름":"민수", "나이":20, "성별":"남", "번호":"010-1111-1111"}
print(dict_minsoo)
dict_minsoo["키"] = 180 # 입력
print(dict_minsoo)

Key, Value 삭제

key와 value 쌍을 삭제하기 위해 del을 사용합니다.
모든 쌍을 지우고 싶을 땐, clear함수를 사용하면 됩니다

dict_minsoo = {"이름":"민수", "나이":20, "성별":"남", "번호":"010-1111-1111"}
print(dict_minsoo)

del dict_minsoo["번호"] # "번호" key 지우기
print(dict_minsoo)

dict_minsoo.clear() # 전체 지우기
print(dict_minsoo)

삭제 시 주의사

key를 삭제할 때 주의해야할 사항은, 존재하지않는 key를 삭제하면 에러가 발생합니다.

dict_minsoo = {"이름":"민수", "나이":20, "성별":"남", "번호":"010-1111-1111"}

del_key = "이메일"
del dict_minsoo[del_key] # 에러 발생
print(dict_minsoo)

Key 존재 유무 판단

이럴 땐 {key} in {dictionary}를 사용해서 key의 존재 유무를 판단합니다.

dict_minsoo = {"이름":"민수", "나이":20, "성별":"남", "번호":"010-1111-1111"}

del_key = "이메일"
# del dict_minsoo[del_key] # 에러 발생
if (del_key in dict_minsoo):
    del dict_minsoo[del_key] # key "이메일" 지우기
else:
    print("key [" + del_key + "] 이/가 없습니다.")

print(dict_minsoo)

딕셔너리에 존재하는 모든 Key 가져오기

딕셔너리의 모든 key를 리스트로 가져오려면 아래와 같이 list와 keys함수를 사용하면 됩니다.

dict_number = {1:"일", 2:"이", 3:"삼"}
list_dic_keys = list(dict_number.keys()) # 모든 key를 리스트 형태로 가져오기
print(list_dic_keys)

딕셔너리에 존재하는 모든 Value 가져오기

모든 value를 리스트로 가져오는 방법도 비슷합니다. list와 values함수를 사용하면 됩니다.

dict_number = {1:"일", 2:"이", 3:"삼"}
list_dic_values = list(dict_number.values()) # 모든 value를 리스트 형태로 가져오기
print(list_dic_values)

Key에 List 입력 불가

딕셔너리를 사용할 때 주의해야할 점은 key에 리스트를 사용할 수 없다는 겁니다.

dict_test = {[1,2,3]: "숫자"} # key에 리스트는 올 수 없음
print(dict_test)

Key에 tuple 입력 가능

key에 튜플을 사용하는 것은 가능합니다.

dict_test = {(1,2,3): "숫자"} # key에 튜플은 사용 가능
print(dict_test)

이상으로 딕셔너리에 대해 알아보았습니다.