본문 바로가기

개발/Python

[파이썬] 데이터타입 - 시퀀스 자료형

튜플타입

- 오브젝트의 리스트를 저장한다
- 밑에 소개할 딕셔너리와 달리, 순서가 있는 데이터 타입이다
- 변경 불가능한(immutable) 데이터타입이고 
- 함수의 인자, 리턴에 주로 사용한다

하기 예제 소스를 살펴보면 10, 20, 30, 40으로 선언한 myT의 값과 tuple type인 것, 그리고 인덱스 순서에 맞게 출력되는 것을 확인할 수 있다.

myT = (10,20,30,40)
print( myT)
print( type(myT))
print( myT[0])
print( myT[-1])
print( myT[0:3])

 

유의할 사항은, 튜플타입은 선언된 값의 변경을 허용하지 않는다.
하단처럼 특정 인덱스의 값을 변경하려고 하면 에러가 발생!!

myT = (10,20,30,40)
print( myT)
print( type(myT))
myT[0] = 100

 

다음으로 볼 시퀀스 자료형은 딕셔너리 데이터타입, 사전 데이터타입이다.

사전타입 (딕셔너리)

- 오브젝트를 키와 값으로 저장하고 (C나 JAVA에서의 MAP으로 생각)
- {키:값} 또는 dict() python 내장함수를 이용한다.
- 순서없는 데이터 타입이고
- 변경가능한(mutable) 데이터타입이다. 

 - 선언

하기 예제를 살펴보면 키값 10에 값 AA를, 20에 BB, 30에 CC를 넣은 뒤 printf하면 각 키와 그에 해당되는 값을 보여준다.
가장 마지막 줄에 get함수를 이용하여 없는 키 40에 데이터 DD를 출력하게 하여 DD가 출력된 것을 볼 수 있으나, 실제 딕셔너리 키 40에 DD가 할당된 것은 아니다. 이 뒤에 print(myD[40])을 호출하게 되면 에러가 발생한다.

myD = {10:"AA",20:"BB",30:"CC"}
print( (myD))
print( type(myD))
print( myD[20])
print( myD.get(40,"DD"))

 

 - 추가, 수정

그렇다면 딕셔너리 인자의 추가와 수정은 어떻게 할까
의외로 간단하다. 원하는 키값에 값을 할당하면, 만약 있던 키였다면 수정이 되고, 사용하지 않은 키였다면 추가가 된다. 

myD = {10:"AA",20:"BB",30:"CC"}
myD[10] = "ZZ"
myD[40] = 'DD' #있으면 수정, 없으면 추가
myD[100] ='EE'
print( (myD))

 

 - 제거

딕셔너리 인자 제거는 pop 또는 del을 사용하여 제거 할 수 있다.

myD = {10:"AA",20:"BB",30:"CC"}
print( myD.pop(20) )
print( (myD))
myD = {10:"AA",20:"BB",30:"CC"}
del( myD[20])
print( (myD))

 

 - 키, 값, 키값 리스트 가져오기

선언한 딕셔너리의 키를 가져오고 싶다면 keys() 값을 가져오고 싶다면 values(), 키값 리스트를 가져오고 싶다면 items()를 쓰면 된다.

myD = {10:"aa",20:"bb",30:"cc"}
print( myD.keys() )
print( myD.values())
print( myD.items() )

 

복합 인덱스

추가로 리스트 타입에서는 복합인덱스로 선언할 수 있다.

test = [10,(10,'AA') ]
print(type(test))
print( test[0] )
print( test[1][0] )