본문 바로가기
  • 10.0
파이썬

[파이썬 기초] 자료구조 : 튜플과 딕셔너리 그리고 이차원데이터 /딕셔너리 중첩

by 10.0 2024. 2. 5.
반응형

 

 이전 [파이썬 기초] 상식▼

더보기

[파이썬 기초] 자료구조 : 튜플과 딕셔너리 그리고 이차원데이터 /딕셔너리 중첩

목차

[파이썬 기초]
1.튜플 (생성, 인덱싱, 슬라이싱, 수정, 리스트로 변환, 언패킹)
2.딕셔너리(생성, 추가, 수정, 삭제, 변경)
3.이차원 데이터/딕셔너리 중첩

[파이썬 기초] 튜플 (생성, 인덱싱, 슬라이싱, 수정, 리스트로 변환, 언패킹)

파이썬 튜플 (tuple)

튜플은 순서가 있고 수정이 불가능한 자료 구조이다.

자료구조 내의 데이터를 변경할 필요가 없거나 변하지 않는 값을 튜플로 묶어 메모리를 아낄 수 있다.

 

파이썬 자료구조

자료구조 예시 순서 유무 수정 가능 여부
리스트(list) [1,2,3] O O
튜플(tuple) (1,2,3) O X
딕셔너리(dict) {“사과”:apple, “바나나”:banana} X O

 

파이썬 리스트 VS 튜플

  리스트 튜플
기호 [ ] ( )
변경 Mutable(수정가능) Immutable(수정불가능)
인덱싱 0 0
슬라이싱 0 0
추가/삽입.삭제 0 x
순서 0 0

 

파이썬 튜플 생성

( ) 사이에 데이터를 적고 쉼표로 구분한다.

과일 = ('사과', '메론', '딸기', '바나나')

print(과일)
print(type(과일))

('사과', '메론', '딸기', '바나나')
tuple

 

파이썬 튜플 인덱싱

튜플은 순서가 있기 때문에 [ ]를 사용하여 정수값으로 인덱싱 할 수 있다.

과일 = ('사과', '메론', '딸기', '바나나')

print(과일[1])

메론

파이썬 튜플 인덱싱

 

파이썬 튜플 슬라이싱

[시작 인덱스 : 끝 인덱스]를 사용해서 슬라이싱 할 수 있다.

과일 = ('사과', '메론', '딸기', '바나나')

print(과일[0:2])

사과, 메론

파이썬 튜플 슬라이싱

 

파이썬 튜플 수정

Immutable(수정불가능)

튜플은 수정이 불가능하다. 

과일 = ('사과', '메론', '딸기', '바나나')

과일[0] = "키위"

XXX TypeError XXX
반응형

 

리스트와 튜플의 형태 변환

리스트와 튜플의 형태 변환

리스트를 튜플로 형태 변환

과일1 = ['사과', '메론', '딸기', '바나나']
과일2 = tuple(과일1)

print(type(과일1))
print(type(과일2))

<class 'list'>    # 과일1의 타입
<class 'tuple'>   # 과일2의 타입

 

 

튜플을 리스트로 형태변환

과일1 = ('사과', '메론', '딸기', '바나나')
과일2 = list(과일1)

print(type(과일1))
print(type(과일2))

<class 'tuple'>    # 과일1의 타입
<class 'list'>     # 과일2의 타입

 

 

데이터언패킹(unpacking)

과일 = ('사과', 10 , 50000, (2024,02,05))

과일이름 = 과일[0]
수량 = 과일[1]
현재가 = 과일[2]
날짜 = 과일[3]

과일 = ('사과', 10 , 50000, (2024,02,05))

과일이름,수량,현재가,날짜 = 과일

 

!주의!

값이 하나인 튜플

하나의 정수값을 튜플에 저장하게 되면 튜플로 정의되는 것이 아닌 정수로 인식이된다.

값 = (1)
type(값)

int    # 정수로 인식함

이럴경우 쉼표를 입력하여 튜플로 정의되게 할 수 있다.

값 = (1, )    # ,사용
type(값)

tuple

 


[파이썬 기초] 딕셔너리(생성, 추가, 수정, 삭제, 변경)

파이썬 딕셔너리

{ key:value }

 

  • key와 value를 쌍으로 저장하는 자료구조 
  • key 를 통해서 value 값을 인덱싱한다.
  • key 와 value 는(:) 콜론 을 사용해서 구분한다.
  • 원소는 쉼표를 사용해서 구분한다.
# 딕셔너리 생성
과일 = {'사과':1000, '메론':5000, '딸기':10000, '바나나':3000}    # 일자로 나란히 정렬
과일 = {                # 보기 좋게 아래로 정렬
	'사과':1000, 
	'메론':5000, 
	'딸기':10000, 
	'바나나':3000
}

 

파이썬 딕셔너리 인덱싱

딕셔너리는 순서가 없으므로 정수로는 인덱싱할 수 없다.

과일 = {                
	'사과':1000, 
	'메론':5000, 
	'딸기':10000, 
	'바나나':3000
}

print(과일[0])    # KeyError

 

 

딕셔너리는 key 를 통해 value 를 인덱싱한다.

과일 = {                
	'사과':1000, 
	'메론':5000, 
	'딸기':10000, 
	'바나나':3000
}

print(과일['사과'])    

1000

 

!주의!

딕셔너리는 없는 key 를 통해 인덱싱하면 에러가 발생한다.

get 함수를 사용하면 key 가 없는 경우 None 을 리턴 한다.

과일 = {                
	'사과':1000, 
	'메론':5000, 
	'딸기':10000, 
	'바나나':3000
}

print(과일['블루베리'])   #KeyError

 

파이썬 딕셔너리 수정

딕셔너리[ key ] = change_ value

 

딕셔너리는 수정이 가능하다.

# 딕셔너리 생성
과일 = {            
	'사과':1000, 
	'메론':5000, 
	'딸기':10000, 
	'바나나':3000
}

# 딕셔너리 수정
과일['사과'] = 1500

 

 

파이썬 딕셔너리 추가

딕셔너리[ new_key ] =  new_ value

 

# 딕셔너리 생성
과일 = {            
	'사과':1000, 
	'메론':5000, 
	'딸기':10000, 
	'바나나':3000
}

# 딕셔너리 추가
과일['블루베리'] = 2000

#변경된 딕셔너리
과일 = {            
	'사과':1000, 
	'메론':5000, 
	'딸기':10000, 
	'바나나':3000
    '블루베리':2000
}

 

 

파이썬 딕셔너리  원소 삭제

del.딕셔너리[key]

key:value 쌍이 딕셔너리에서 삭제된다.

# 딕셔너리 생성
과일 = {            
	'사과':1000, 
	'메론':5000, 
	'딸기':10000, 
	'바나나':3000
}

# 딕셔너리 삭제
del.과일['바나나'] 

#변경된 딕셔너리
과일 = {            
	'사과':1000, 
	'메론':5000, 
	'딸기':10000, 
}

 

파이썬 딕셔너리 Key만 얻기

딕셔너리.keys( )

과일 = {            
	'사과':1000, 
	'메론':5000, 
	'딸기':10000, 
	'바나나':3000
}

과일.keys()    #key만얻기

'사과','메론','딸기','바나나

 

파이썬 딕셔너리 Value만 얻기

딕셔너리. values ( )

과일 = {            
	'사과':1000, 
	'메론':5000, 
	'딸기':10000, 
	'바나나':3000
}

과일.values()    #value만얻기

1000,5000,10000,3000

[파이썬 기초] 이차원 데이터

이차원 데이터

이차원 데이터란 쉽게 생각하면 상자속에 또 다른 상자가 들어있는 경우다.

아파트라고 생각해도 된다.

 

아파트 1층에는 101호와 102호가 있다.

2층에는 201호와 202호가, 3층에는 301호와 302호가 있다.

이를 파이썬 코드로 표현하면 아래와 같다.

apart = [
[101, 102]
[201, 202]
[301, 302]
]

 

 

이차원 리스트 인덱싱

 

Q. 2차원 리스트의 [0]번 구하기

A.

이차원 리스트의 인뎅싱의 결과는 일차원 리스트다.

인덱싱기호를 연속으로 붙여서 사용하면 이차원 리스트 안에있는 데이터를 구할수 있다.

이차원 리스트의 인덱싱 -> 1차원 리스트 -> 특정 원소

apart = [
[101, 102]
[201, 202]
[301, 302]
]

print(apart[0])    #list type

[101,102]
apart = [
[101, 102]
[201, 202]
[301, 302]
]

print(apart[0[0]])  

101

 

딕셔너리 중첩

딕셔너리 안에 딕셔너리가 있는 경우다.

예시)

과일정보 = {
   "이름":"바나나",
   "원산지":"동남아시아",
   "가격":3000,
   "가게주소":{
       "도":"경기도"
       "시":"수원시"
       "동":"연무동"
   }
}

pirnt(과일정보["이름"])
pirnt(과일정보["주소"]["도"])


바나나
경기도
반응형