TIL 8 자료구조 사전 (dictionary)

CastleQ·2021년 4월 26일
0

python에 진심인 편

목록 보기
8/8
post-thumbnail

사전(dictionary)의 의미

사전(辭典, dictionary)은 낱말의 뜻을 서술하는 것 내지는 도표와 함께 모아 놓은 것, 또는 어떤
낱말과 대응하는 다른 나라말의 낱말을 가나다 순서대로 배열한 것이다.

낱말과 대응하는 뜻이나 다른 나라의 말을 순서대로 배열한다는 걸 알 수 있다.
배열 대응

파이썬(python)에서 dictionary

사전(dictionary)과 같이 임의로 정한 key를 이용하여 각각의 값(value)에 접근할 수 있도록 만들어 놓은 방식의 자료구조

위의 dictionary(사전)의 사전적 의미와 같이 낱말key라면 그에 대응하는
낱말의 뜻value이다.

사전(dictionary)을 사용하는 이유

  • keyvalue의 1:1대응을 하는 방식이라 리스트튜플보다 빠르다.
  • 연관된 2개의 데이터를 같이 저장할 수 있다.
  • 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

사전(dictionary) 사용방법

기본 사용법

cabinet = {3:"유재석", 100:"김태호"}
print(cabinet[3])
print(cabinet[100])

> 유재석
> 김태호

중괄호로 감싸고 keyvalue:으로 구분한다.

get()


print(cabinet.get(3))
> 유재석

print(cabinet[5]) # 반환할 값이 없으면 오류가 난다.
print(cabinet.get(5)) # 반환할 값이 없으면 None 출력
print(cabinet.get(5, "사용 가능")) # 반환할 값이 없으면 따옴표 안의 문장을 반환함

in

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

# 간 손님
del cabinet["A-3"] # 삭제
print(cabinet)

> {'B-100': '김태호', 'C-20': '조세호'}

key()

# key 들만 출력
print(cabinet.keys())

>dict_keys(['B-100', 'C-20'])

values()

# value 들만 출력
print(cabinet.values())

> dict_values(['김태호', '조세호'])

item()

# key, value 쌍으로 출력
print(cabinet.items())

> dict_items([('B-100', '김태호'), ('C-20', '조세호')])

clear()

# 지우기 
cabinet.clear()

참조자료

참조자료 : 파이썬 무료 강의 (기본편) - 6시간 뒤면 나도 개발자
참조자료 : 파이썬 공식 사용서
참조자료 : 점프 투 파이썬
참조자료 : Coding Pie
참조자료 : 24시 방구석 통계학

profile
DONE IS BETTER THAN PERFECT

0개의 댓글