[제로베이스] CH3. 자료구조 - 튜플, 딕셔너리

정해성·2023년 6월 23일
0

제로베이스

목록 보기
15/36
post-thumbnail

튜플

튜플tuple은 몇 가지 점을 제외하곤 리스트와 거의 비슷하며 리스트와 다른 점은 다음과 같다.

  • 리스트는 [], 튜플은 ()으로 둘러싼다. (괄호 생략 가능)
  • 리스트는 요솟값의 생성, 삭제, 수정이 가능하지만, 튜플은 요솟값을 바꿀 수 없다.
listA = [a,b,c,d,e]
tupleA = (a,b,c,d,e)
tupleB = 1, 2, 3

튜플과 리스트

앞의 포스트에서 리스트 원소에 접근하는 방법, 슬라이싱 방법 등 대부분 튜플에서 동일하다. 하지만 튜플은 원소 변경이 불가 하다. 그렇지만 방법이 없지 않다.

리스트와 튜플은 서로 자료형 변환이 가능하다. 그래서 튜플을 리스트로 바꾸면 원소 변경이 가능하다.

students = (홍길동, 짱구, 철수, 영희)
students = list(students)

딕셔너리

딕셔너리 타입은 immutable한 키(key)와 mutable한 값(value)으로 맵핑되어 있는 순서가 없는 집합이다. 예를 들어 사람을 "이름" = "홍길동", "생일" = "몇 월 며칠" 등과 같은 방식으로 그 사람이 가진 정보를 나타낼 수 있다. 이러한 대응 관계를 나타낼 수 있는 자료구조를 딕셔너리(dictionary)라고 한다.

딕셔너리 기본구조

딕셔너리의 기본 모습은 Key와 Value의 쌍 여러 개가 {}로 둘러싸여 있다. 각각의 요소는 Key: Value 형태로 이루어져 있고 쉼표(,)로 구분되어 있다.

### 기본 구조 ### 
딕셔너리 변수명 = {Key1: Value1, Key2: Value2, Key3: Value3, ...}

### 예시 ### 
dic = {'name': 'Sam', 'phone': '010-9999-1234', 'birth': '1118'}

딕셔너리 조작

  • 쌍 추가하기
a = {1: 'a'}

a[2] = 'b'
a['name'] = 'Sam'

## 출력 ##
a = {1: 'a', 2: 'b', 'name': 'Sam'}

{1: 'a'} 딕셔너리에 a[2] = 'b'와 같이 입력하면 딕셔너리 a에 Key와 Value가 각각 2와 'b'인 {2: 'b'} 딕셔너리 쌍이 추가된다.

  • 요소 삭제하기
del a[1]

## 출력 ##
a = {2: 'b', 'name: 'Sam'}

del 함수를 사용해서 del a[key]를 입력하면 지정한 Key에 해당하는 {Key: Value} 쌍이 삭제된다.

  • Key를 사용해 Value 얻기
grade = {'Sam': 100, 'Jack': 80}
print(grade['Sam'])
print(grade['Jack'])

## 출력 ##
100
80

주의할 사항

1.key 값은 하나
딕셔너리에서 Key는 고유한 값이므로 중복되는 Key 값을 설정해 놓으면 하나를 제외한 나머지 것들이 모두 무시된다는 점에 주의해야 한다. 동일한 Key가 2개 존재할 경우, 하나의 쌍은 무시된다.

2.Key에 리스트는 쓸 수 없다.
하지만 튜플은 Key로 쓸 수 있다. 딕셔너리의 Key로 쓸 수 있느냐, 없느냐는 Key가 변하는(mutable) 값인지, 변하지 않는(immutable) 값인지에 달려 있다.

리스트는 그 값이 변할 수 있기 때문에 Key로 쓸 수 없다. 다음 예처럼 리스트를 Key로 설정하면 리스트를 키 값으로 사용할 수 없다는 오류가 발생한다.

관련 함수

  • Key 리스트 만들기
a = {'name': 'Sam', 'phone': '010-9999-1234', 'birth': '1118'}

print(a.keys())

## 출력 ##
dict_keys(['name', 'phone', 'birth'])
  • Value 리스트 만들기
a = {'name': 'Sam', 'phone': '010-9999-1234', 'birth': '1118'}

print(a.values())

## 출력 ##
dict_values(['Sam', '010-9999-1234', '1118'])
  • Key, Value 쌍 얻기
a = {'name': 'Sam', 'phone': '010-9999-1234', 'birth': '1118'}

print(a.items())

## 출력 ##
dict_items([('name', 'Sam'), ('phone', '010-9999-1234'), ('birth', '1118')])
  • 모두 지우기
 a.clear()
  • Key로 Value 얻기
a = {'name': 'Sam', 'phone': '010-9999-1234', 'birth': '1118'}

print(a.get('name'))

## 출력 ##
Sam

get(x) 함수는 x라는 Key에 대응되는 Value를 리턴한다. 앞에서 살펴보았듯이 a.get('name')은 a['name']을 사용했을 때와 동일한 결괏값을 리턴한다.

profile
코린이 공부중

0개의 댓글