사전형 자료(Dictionary)란?
말그래도 사전으로, Key와 Value를 한 쌍으로 가지는 자료형이다.
예를 들면, "이름"이라는 Key에 "엄준식"이라는 Value를 갖고 "거주지" = "동탄"과 같이 대응 관계를 갖는 자료형이다.
사전은 리스트나 튜플처럼 순차적으로(sequential) 해당 요솟값을 구하지 않고 Key를 통해 Value를 얻는다.
이것이 바로 사전의 가장 큰 특징이다. "엄준식"이라는 단어의 뜻을 찾기 위해 사전의 내용을 순차적으로 모두 검색하는 것이 아니라 "엄준식"이라는 단어가 있는 곳만 펼쳐 보는 것이다.
1. 사전의 구성
cabinet = {3:"유재석", 100:"김태호"} # key:value
print(cabinet[3]) # 유재석
print(cabinet[100]) # 김태호
print(cabinet.get(3)) #유재석
다음 예시를 보자.
cabinet 이라는 이름의 변수로 중괄호{ }를 통해 사전형 자료를 만든다.
이때 {key1 : value1, key2 : value2, ...}으로 나타내준다.
그리고 .get(key)를 통해 원하는 value를 가져온다.
# 정수가 아닌 str도 가능!
cabinet_str = {"A-3":"유재석", "B-43":"김태호"}
print(cabinet_str["A-3"]) # 유재석
print(cabinet_str["B-43"]) # 김태호
정수가 아닌 str도 가능하다
2. 사전의 출력
print(cabinet[5]) # 오류 발생 후 프로그램 종료
print("hi") # 그래서 출력이 안됨
print(cabinet.get(5)) # None
print("hi") # hi 출력됨
만약 사전에 없는 key를 [ ]로 꺼낸다면 오류로 종료되어 뒤의 "hi"도 터미널에 나오지 않지만,
get를 활용하면 없는 key는 None으로 출력되고 뒤의 "hi"도 잘 출력된다.
print(cabinet.get(5, "사용가능")) # None-->'사용가능'으로 출력
이렇게 get(key, str)을 이용하면 None이 아닌 입력한 str의 값이 대신 출력된다.
print(3 in cabinet) # key in 변수 --> True
print(5 in cabinet) #False
또한 print(key in value)의 형태로 출력시 True or False의 값을 반환한다.
# key 들만 출력
print(cabinet_str.keys()) # dict_keys(['B-43', 'C-50'])
# value 들만 출력
print(cabinet_str.values()) # dict_values(['김태호', '조세호'])
# key, value 둘 다 출력
print(cabinet_str.items()) # dict_items([('B-43', '김태호'), ('C-50', '조세호')])
# 모든 값의 삭제
cabinet_str.clear()
key, value만 혹은 둘다 출력 할 수도 있다.
3. 사전의 편집
# 새 이용자 추가
print(cabinet_str) # {"A-3",:"유재석", "B-43":"김태호"
cabinet_str["A-3"] = "김종국"
cabinet_str["C-50"] = "조세호"
print(cabinet_str) # {'A-3': '김종국', 'B-43': '김태호', 'C-50': '조세호'}
사전에 새로운 key와 value를 추가/수정하고 싶다면, dictionary[key] = value로 추가 할 수 있다.
# 기존 이용자 삭제
del cabinet_str["A-3"] # "A-3" 삭제
위의 형태에 앞에 del을 붙이면 삭제 또한 가능하다.