사전(辭典, dictionary)은 낱말의 뜻을 서술하는 것 내지는 도표와 함께 모아 놓은 것, 또는 어떤
낱말과 대응하는 다른 나라말의 낱말을 가나다 순서대로 배열한 것이다.
낱말과 대응하는 뜻이나 다른 나라의 말을 순서대로 배열한다는 걸 알 수 있다.
배열
대응
사전(dictionary)과 같이 임의로 정한 key
를 이용하여 각각의 값(value
)에 접근할 수 있도록 만들어 놓은 방식의 자료구조
위의 dictionary(사전)의 사전적 의미와 같이
낱말
이key
라면 그에 대응하는
낱말의 뜻
은value
이다.
key
와 value
의 1:1대응을 하는 방식이라 리스트
나 튜플
보다 빠르다.key
값을 지정할 수 있어 값을 찾기가 수월하다.예를 들어 보겠다.
price['삼성전자'] = 48300
주식의 종목을 검색했을 때 가격을 찾고 싶은 상황이라고 가정하면 list나 튜플을 사용해서는 값이
하나만 저장되기 때문에 대응하는 값을 저장하기 어려울 것이다.
하지만 사전(dictionary)
을 사용한다면 쉽게 가능하다.
my_list = ["castleQ", 1990, 7, 5, "Male"]
위의 코드에서 성별을 찾으려면 my_list[4]와 같은 형태를 사용해서 값을 추출할 것이다.
my_list_all = ["castleQ", 1990, 7, 5, "Male", "NoSmoke",
"beer", "O", "RH+", 185, 90, 1.0, 1.0, "Seoul",
"optical", "computer engineering", "Mac"]
상대적으로 많은 정보를 가지고 있을 때 거주지를 찾고 싶으면
아까와 같은 방식으로는 앞에서부터 0,1,2,3,4 ... 이렇게 숫자를 세어야 할 것이다.
이럴때 유용하게 사용 가능한게 사전(dictionary)
이다.
my_info = {"name" : "castleQ",
"birth_year" : 1990,
"birth_month" : 7,
"birth_day" : 5,
"sex" : "Male",
"is_smoker" : "False",
"fav_liquor" : "beer",
"blood_type" : "O",
"RH" : "RH+",
"height" : 185,
"weight" : 90,
"visionL" : 1.0,
"visionR" : 1.0,
"residence" : "Seoul",
"major" : "optical",
"minor" : "computer engineering",
"notebook_brand" : "Mac"}
my_info['residence']
> Seoul
cabinet = {3:"유재석", 100:"김태호"}
print(cabinet[3])
print(cabinet[100])
> 유재석
> 김태호
중괄호로 감싸고 key
와 value
를 :
으로 구분한다.
print(cabinet.get(3))
> 유재석
print(cabinet[5]) # 반환할 값이 없으면 오류가 난다.
print(cabinet.get(5)) # 반환할 값이 없으면 None 출력
print(cabinet.get(5, "사용 가능")) # 반환할 값이 없으면 따옴표 안의 문장을 반환함
print(3 in cabinet) # True
print(5 in cabinet) # False
key안에 값이 있으면 True
그렇지 않으면 False를 반환한다.
cabinet = {"A-3":"유재석", "B-100":"김태호"}
print(cabinet["A-3"])
print(cabinet["B-100"])
> {'A-3': '유재석', 'B-100': '김태호'}
# 새 손님
print(cabinet)
cabinet["A-3"] = "김종국" # 유재석을 김종국으로 교체
cabinet["C-20"] = "조세호" # 조세호 추가
print(cabinet)
> {'A-3': '김종국', 'B-100': '김태호', 'C-20': '조세호'}
# 간 손님
del cabinet["A-3"] # 삭제
print(cabinet)
> {'B-100': '김태호', 'C-20': '조세호'}
# key 들만 출력
print(cabinet.keys())
>dict_keys(['B-100', 'C-20'])
# value 들만 출력
print(cabinet.values())
> dict_values(['김태호', '조세호'])
# key, value 쌍으로 출력
print(cabinet.items())
> dict_items([('B-100', '김태호'), ('C-20', '조세호')])
# 지우기
cabinet.clear()
참조자료 : 파이썬 무료 강의 (기본편) - 6시간 뒤면 나도 개발자
참조자료 : 파이썬 공식 사용서
참조자료 : 점프 투 파이썬
참조자료 : Coding Pie
참조자료 : 24시 방구석 통계학