[Python] 자료구조 2 - 딕셔너리, 튜플
자료구조 2 - 딕셔너리, 튜플
딕셔너리
딕셔너리는 여러 값을 저장해 두고 필요한 값을 꺼내 쓰는 키-값쌍 (key value pair) 의 자료구조 ( 많은 속성들을 가지고 있는 데이터를 만들 때 사용)
딕셔너리명 = { 키1 : 값1,
키2 : 값2,
... }
* 딕셔너리 키의 값은 숫자, 문자열, boolean형 같은 자료형 외에도 리스트, 튜플, 딕셔너리 같은 자료구조도 가능하다.
player = {
'name' : 'nico',
'age' : 12,
'alive' : True,
'fav_food' : ["🍕","🍔"],
"friend" : {
"name" : "lynn",
"fav_food" : "🍎"
}
}
딕셔너리 값 접근
딕셔너리의 키와 값에 접근하는 방식은 리스트와 비슷하다. (리스트에선 인덱스 -> 값, 딕셔너리에선 키 -> 값 에 접근)
만약, 키의 이름을 알고 있다면 딕셔너리 메서드 dictionary.get( <키 이름> ) 를 이용해서 값을 알 수 있다.
# 위에서 쓰인 딕셔너리 키와 값을 사용한다.
# 특정 키의 값에 접근, 검색
print(player.get('age')) # 12
print(player.get('fav_food')) # ["🍕","🍔"]
#특정 키의 값이 딕셔너리라면 해당 딕셔너리의 키의 값의 값을 알 수 있음.
print(player['friend']["name"]) # lynn
딕셔너리 수정
1. 새로운 키와 값 추가
: 리스트의 인덱스 접근과 같이 <딕셔너리명>[추가할 키이름] = 추가할 값
1-1. 기존 키에 새로운 값 추가
: 딕셔너리 메서드 <딕셔너리명>[<기존 키이름>].append( 추가할 값 )
2. 값 수정
: 리스트의 인덱스 접근과 같이 <딕셔너리명>[수정할 키이름] = 수정값
3. 키와 값 삭제
- 함수 del() 을 이용하여 해당 키와 값 삭제 : del ( <딕셔너리명> [ 삭제할 키이름 ])
- 딕셔너리 메서드 <딕셔너리명>.pop( 삭제할 키이름 )
3-1. 딕셔너리의 모든 키, 값 삭제
: 딕셔너리 메서드 <딕셔너리명>.clear()
4. 딕셔너리 확장
: 딕셔너리 메서드 <기존 딕셔너리명>.update( <추가할 딕셔너리명> )
player['xp'] = 1500 #새로운 키,값을 추가 (= mutable!)
print(player)
player['fav_food'].append("🍜") #fav_food 키에 새로운 값 추가
print(player['fav_food']) #특정 키값을 print
player['alive'] = False #특정 키의 값을 수정
print(player)
del(player['alive']) # 특정 키값 삭제
player.pop('age') # 특정 키값 삭제
print(player)
player.clear() #딕셔너리의 모든 키값을 없앰
print(player)
딕셔너리와 반복문 (For문)
딕셔너리의 모든 키, 값을 순환하며 검색, 접근 (단, 딕셔너리는 값의 순서를 지키지 않음.)
1. 딕셔너리의 모든 키에만 접근 (여기서 .keys() 는 생략 가능 (보통 딕셔너리의 키에 접근하기 때문) )
for key in <딕셔너리명>.keys() :
print(key) # 다른 코드로 사용 가능
2. 딕셔너리의 모든 값에만 접근 ( 메서드 dict.values() )
for key in <딕셔너리명>.values() :
print(key) # 다른 코드로 사용 가능
3. 딕셔너리의 모든 키, 값에 접근 ( 메서드 dict.items() )
for key in <딕셔너리명>.items() :
print(key) # 다른 코드로 사용 가능
튜플
튜플 (tuple) : 리스트 + 불변성 (immutable) => 즉, 내부 데이터값을 바꿀 수 없고 정해진 순서를 바꿀 수 없는 자료구조
튜플 선언
튜플명 = ( 튜플아이템1, 튜플아이템2, ...)
days = ("Mon", "Tue", "Wed", "Thu", "Fri")
print(days) # 출력결과 : ('Mon', 'Tue', 'Wed', 'Thu', 'Fri')
list = [1, 2, 3, 4]
tuple = tuple(list) # 리스트 -> 튜플
print(days[0]) #리스트와 아이템에 접근하는 법이 같음
튜플은 내부 데이터값, 순서를 바꿀 수 없기 때문에 변경, 삭제가 불가능하지만, 리스트를 통해서 값을 수정, 삭제, 추가하고 이를 tuple() 함수를 통해서 튜플로 바꿀 수 있다.