본문 바로가기
코딩/Python

8) 사전

by 엘리야스 2023. 7. 18.

사전형 자료(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을 붙이면 삭제 또한 가능하다.

 

 

 

 

 

 

 

'코딩 > Python' 카테고리의 다른 글

10) 집합(set)  (0) 2023.07.18
9) 튜플  (1) 2023.07.18
7) 리스트  (0) 2023.07.11
6) 탈출문자  (0) 2023.07.11
5) 문자열 포맷  (0) 2023.07.11