Python/파이썬 기초

[Python] 자료구조 2 - 딕셔너리, 튜플

isfp_yykkng 2023. 2. 19. 00:33

자료구조 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() 함수를 통해서 튜플로 바꿀 수 있다.