Python/Python 시작하기

10. 파이썬 자료형 - 딕셔너리 (dictionary : dict) 자료형

arvigoes 2019. 12. 16. 23:34

딕셔너리                                                             

딕셔너리는 말그대로 사전입니다.

영어사전을 보시면 단어 와 단어해설 의 나열로 되어 있습니다.

단어(Key)와 단어해설(Value) 의 쌍으로 된 것을 pair (쌍) 이라 부르고 pair 들의 집합을 딕셔너리(dict) 라고 부릅니다.

key 에는 불변의 상수형 자료형이 사용 가능 합니다.

숫자, 문자, 튜플 같은 변경할 수 없는 자료만 사용 가능 합니다.

list, dict 등 은 사용이 불가능 합니다. 사전에서 "dragon : 용" 인데, 설명이 용가리로 바뀔 수는 있어도 dragon 이 삭제 될지 언정 바뀌어선 안되는 것 처럼요. 

 

dict 만들기                                                          

기본형 : { key1:value1, key2:value2, key3:value3, ....}

key 와 value 의 여러 쌍을 콤마(,) 로 구분 하고 중괄호({}) 로 감싸 주면 dict 형 자료가 됩니다.

# Code 1

dict_test = {1:"아이폰", "IMEI":"IMEI12233", "통신사":"SKT", "번호":[10,1234,1234]}

print(dict_test)

10-1. 생성

여기에서 키는 1, IMEI, 통신사, 번호가 되고

value 는 "아이폰", "IMEI12233", "SKT", "10,1234,1234] 가 됩니다.

 

# Code 2
# dict 접근
dict_test = {1:"아이폰", "IMEI":"IMEI12233", "통신사":"SKT", "번호":[10,1234,1234]}

print(dict_test)
print(dict_test[1])
print(dict_test["IMEI"])
print(dict_test["통신사"])
print(dict_test["번호"])

10-2. 접근

# Code 3
# dict 변경
dict_test = {1:"아이폰", "IMEI":"IMEI12233", "통신사":"SKT", "번호":[10,1234,1234]}

dict_test[1] = "노트10"
print(dict_test)
print(dict_test[1])

10-3. 변경

키는 변경이 불가능 하지만 vaule 는 언제든 변경이 가능 합니다.

'번호'에 해당하는 value 는 리스트 라서 리스트에 데이터 추가도 가능 합니다.

 

 

요소의 관리                                                       

# Code 4
# dict 추가 & 삭제
dict_test = {1:"아이폰", "IMEI":"IMEI12233", "통신사":"SKT", "번호":(10,1234,1234)}

dict_test["주인"] = "철수"
del dict_test["IMEI"]
print(dict_test)

10-4. 추가 삭제

추가 하는 법을 보면

dict_test[Key] = value 가 기본 입니다. 간단하죠?

여기서 주의 할 점은 만약 dict_test[1] = "영희" 라고 하면 어떻게 될까요?

이렇게 할 경우 기존에 dict_test[1] 에 할당된 value("아이폰") 이 삭제가 되고 dict_test[1] 에는 value("영희") 가 됩니다.

dict에서 키는 고유한 값이므로 중복이 될 수 없습니다. 가장 마지막에 설정된 값을 제외 하고 모두 무시 되는 점을 꼭 기억 하시길 바랍니다.

 

없는 키 참조

# Code 5
# dict 없는 key 참조ㅁ
dict_test = {1:"아이폰", "IMEI":"IMEI12233", "통신사":"SKT", "번호":(10,1234,1234)}
print(dict_test[2])

10-5. 없는 키 참조 에러

dict_test 에는 2 라는 키가 없습니다. 없는 키에 대해 참조가 일어날 경우 파이썬은 에러가 발생하고 실행이 중지 됩니다.

영어 사전에 asddddwe 라는 단어가 있는지 없는지 찾아 볼 수는 있는 거잖아요?

이렇때를 위해서 파이썬에서는 in 이라는 키워드를 재공합니다.

# Code 6
# dict 키 검사 in
dict_test = {1:"아이폰", "IMEI":"IMEI12233", "통신사":"SKT", "번호":(10,1234,1234)}
print( 2 in dict_test)
print( 1 in dict_test)
print( "번호" in dict_test)
print( "주인" in dict_test)

10-6. in 사용

in 에 대한 결과는 True & False (bool) 타입으로 전달 됩니다.

결과가 True 일 경우 에만 해당 key 에 대해 참조 하시면 됩니다.

if 문이나 for 문에 대해서 아직 학습전 인데 간단하게 코드만 추가 하도록 하겠습니다.

# Code 7
# dict 키 검사 in if
dict_test = {1:"아이폰", "IMEI":"IMEI12233", "통신사":"SKT", "번호":[10,1234,1234]}

if 2 in dict_test:
    print("dict_test[2] " + dict_test[2])

if 1 in dict_test:
    print("dict_test[1] " + dict_test[1])

if "번호" in dict_test:
    print("dict_test[통신사] " + dict_test["통신사"])

if "주인" in dict_test:
    print("dict_test[주인] " + dict_test["주인"])

10-7. in with if

이런식으로 사용 하면 에러 없이 사용 가능 합니다.

 

Dict 의 순회                                                    

# Code 8
# dict 순회
dict_test = {1:"아이폰", "IMEI":"IMEI12233", "통신사":"SKT", "번호":[10,1234,1234]}

for k, v in dict_test.items():
    print('key:' + k '   value:' + v)	'key 와 value 가 모두 str 이므로

 

가끔은 dict를 전체를 순회하는 경우가 있습니다.
이럴 경우 .items 를 통해 key value 를 따로 가져와서 전체 순회가 가능 합니다.

리스트, 튜플, 딕셔러니등은 앞으로도 자주 나오게 될 것입니다.

추가되는 내용이 있으면 계속 추가 하도록 하겠습니다.