레쭈고 파이썬

파이썬 2장 - 4

정땅미 2024. 2. 26. 01:12

오늘은 튜플 자료형에 대해 알아보겠습니당.

 

튜플은 리스트와 거의 비슷하며 리스트와 다른 점은

1. 리스트는 [], 튜플은 ()으로 둘러쌉니당.

2. 리스트는 요솟값의 생성, 삭제, 수정이 가능하지만, 튜플은 요솟값을 바꿀 수 없어요!!!

 

그럼 튜플을 어떻게 만들까요?!

t1 = ()

t2 = (1, )  단지 1개의 요소만을 가질 때는 요소 뒤에 쉼표를 반드시 붙여야 한다는 점이 차이점!

t3 = (1, 2, 3) 

t4 = 1, 2, 3 소괄호를 생략해도 된다는 점이 차이점!

t5 = ('a', 'b', ('ab', 'cd'))

얼핏 보면 튜플과 리스트는 비슷한 역할을 하지만, 프로그래밍을 할 때 튜플과 리스트는 구별해서 사용하는 것이 유리해용.

튜플과 리스트의 가장 큰 차이는 요솟값을 변화시킬 수 있는지의 여부예요.

리스트는 가능하고, 튜플은 불가합니닷

실제 프로그램에서는 값이 변경되는 형태의 변수가 훨씬 많아 리스트를 더 많이 사용합니다.ㅎㅎ

 

튜플의 요솟값을 지우거나 변경하려고 하면 생기는 일!!!!

1. 튜플 요솟값을 삭제하려 할 때

>>> t1 = (1, 2, 'a', 'b')

>>> del t1 [0]

이렇게 작성해 주면 에러가 떠용

2. 튜플 요솟값을 변경하려 할 때 

>>> t1 = (1, 2, 'a', 'b')

>>> t1 [0] = 'c'

변경하려고 해도 에러가 발생하는 것을 볼 수 있어용

 

튜플을 다루는 방법에 대해 알아보겠습니당.

튜플은 요솟값을 변화시킬 수 없다는 점만 제외하면 리스트와 완전히 동일하므로 간단히만 살펴보면 됩니따당

1. 인덱싱 하기

>>> t1 = (1, 2, 'a', 'b')

>>> t1 [0]

1

>>> t1 [3]

'b' 

2. 슬라이싱 하기

>>> t1 = (1, 2, 'a', 'b')

>>> t1 [1:]

(2, 'a', 'b')

3. 튜플 더하기

>>> t1 = (1, 2, 'a', 'b')

>>> t2 = (3, 4)

>>> t3 = t1 + t2

>>> t3

(1, 2, 'a', 'b', 3, 4)

4. 튜플 곱하기

>>> t2 = (3, 4)

>>> t3 = t2 * 3

>>> t3

(3, 4, 3, 4, 3, 4)

5. 튜플 길이 구하기

>>> t1 = (1, 2, 'a', 'b')

>>> len(t1)

4

 

- 딕셔너리 자료형 -

 

딕셔너리란?

: 딕셔너리는 key와 value를 한 쌍으로 가지는 자료형입니당.

딕셔너리는 리스트나 튜플처럼 순차적으로 해당 요솟값을 구하지 않고 Key를 통해 Value를 얻는다.

 

딕셔너리는 어떻게 만들까용?

딕셔너리의 기본 모습을 보여드리겠습니닷.

{Key1: Value1, Key2: Value2, Key3: Value3,...}

Key와 Value의 쌍 여러 개가 {}로 둘러싸여 있습니당. 각각의 요소들은 Key: Value 형태로 이루어져 있으며 쉼표로 구분되어 있어용

>>> dic = {'name': 'pay', 'phone': '010-9999-1234', 'birth': '1118'}

>>> a = {1: 'hi'}

Key로 정수값 1, Value로 문자열 'hi'를 사용한 예입니닷

>>> a = {'a' : [1, 2, 3]}

 

딕셔너리 쌍 추가, 삭제하기

1. 딕셔너리 쌍 추가하기

>>> a = {1: 'a'}

>>> a [2] = 'b'

>>> a

{1: 'a', 2: 'b'}

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

>>> a ['name'] = 'pey'

>>> a

{1: 'a', 2: 'b', 'name': 'pey'}

똑같은 원리입니당.

>>> a [3] = [1, 2, 3]

>>> a

{1: 'a', 2: 'b', 'name': 'pey', 3: [1, 2, 3]}

2. 딕셔너리 요소 삭제하기

>>> del a [1]

>>> a

{2: 'b', 'name': 'pey', 3: [1, 2, 3]}

이 코드는 Key가 1인 Key:Value 쌍을 삭제합니당.

 

딕셔너리를 사용하는 방법!

1. 딕셔너리에서 Key를 사용해 Value 얻기

>>> grade = {'pey': 10, 'julliet' : 99}

>>> grade ['pey']

10

>>> grade ['julliet']

99

이는 Key가 'pey'인 딕셔너리의 Value를 반환해 주고

Key가 'jullie'인 딕셔너리의 Value를 반환해 주는 코드입니닷.

리스트나 튜플, 문자열은 요솟값을 얻고자 할 때 인덱싱이나 슬라이싱 기법 중 하나를 사용했지만 딕셔너리는 단 한 가지 방법뿐입니다. 

그것은 위의 방법입니닷. 어떤 Key의 Value를 얻기 위해서는 '딕셔너리_변수_이름[Key]'를 사용해야 합니닷.

2. 딕셔너리 만들 때 주의할 사항

딕셔너리에서 Key는 고유한 값이므로 중복되는 Key 값을 설정해 놓으면 하나를 제외한 나머지 것들이 모두 무시돼요!

다음 예에서 볼 수 있듯이 동일한 Key가 2개 존재할 경우 1: 'a' 쌍이 무시됩니닷

>>> a = {1: 'a', 1: 'b'}

>>> a

또 주의해야 할 점은 Key에 리스트는 쓸 수 없다는 것입니다. 하지만 튜플은 Key로 쓸 수 있어용.

딕셔너리의 Key로 쓸 수 있느냐 없느냐는 Key가 변하는 값인지 변하지 않는 값인지에 달려 있어용.

리스트는 그 값이 변할 수 있기 때문에 Key로 사용하지 못해요!

>>> a = {[1,2] : 'hi]}

이렇게 쓰면 오류가 발생한답니닷.

단, Value에는 변하는 값이든, 변하지 않는 값이든 아무 값이나 넣을 수 있어요!!!

 

딕셔너리 관련 함수

1. Key 리스트 만들기 - keys

>>> a = {'name': 'pey', 'phone': '010-9999-1234', 'birth': '1118'}

>>> a.keys()

dict_keys(['name', 'phone', 'birth'])

a.keys()는 딕셔너리의 a의 Key만을 모아 dict_keys 객체를 리턴합니당.

dict_keys 객체를 리스트로 변환하려면 다음과 같이 하면 됩니닷.

>>> list(a.keys())

['name', 'phone', 'birth']

2. Value 리스트 만들기 - values

>>> a.values()

dict_values(['pey', '010-9999-1234', '1118'])

3. Key, Value 쌍 얻기 - items

>>> a.items()

dict_items([('name', 'pey'), ('phone', '010-9999-1234'), ('birth', '1118')])

items 함수는 Key와 Value의 쌍을 튜플로 묶은 값을 dict_items 객체로 리턴합니다.

4. Key: Value 쌍 모두 지우기 - clear

>>> a.clear()

>>> a

{}

clear 함수는 딕셔너리 안의 모든 요소를 삭제합니당.

5.Key로 Value 얻기 - get

>>> a = {'name': 'pey', 'phone': '010-9999-1234', 'birth': '1118'}

>>> a.get('name')

'pey'

>>> a.get('phone')

'010-9999-1234'

get(x) 함수는 x라는 Key에 대응되는 Value를 리턴합니닷.

앞에서 배웠듯이(딕셔너리에서 Key를 사용해 Value 얻기) get('name')은 a ['name']을 사용했을 때와 동일한 결괏값을 리턴합니다.

다만 다른 점이 있습니다. 먼저 코드를 보시져~!

>>> a = {'name': 'pey', 'phone': '010-9999-1234', 'birth': '1118'}

>>> print(a.get('nokey'))

None

>>> print(a ['nokey'])

에러 발생

존재하지 않는 키로 값을 가져오려고 할 경우, 처음 방법으로 했을 때는 none이라는 것을 출력시키지만 두 번째 방법으로 하면 에러를 발생시킵니당.

어떤 상황에서 어떠한 코드를 쓸 것인가는 스스로가 정하는 거죠!!!!!

딕셔너리 안에 찾으려는 Key가 없을 경우, 미리 정해 둔 디폴트 값을 대신 가져오게 하고 싶을 때는 get(x, '디폴트 값')을 사용하면 편리합니닷.

>>> a.get('nokey', 'foo')

'foo' 

6. 해당 Key가 딕셔너리 안에 있는지 조사하기 - in

>>> a = {'name': 'pey', 'phone': '010-9999-1234', 'birth': '1118'}

>>> 'name' in a

True

>>> 'email' in a

False

'name' 문자열은 a 딕셔너리의 Key 중 하나이므로 참을 리턴합니당.

하지만 'email'은 없는 Key 이므로 거짓을 리턴합니닷.

 

어때요?! 오늘 내용은 할 만했나요?!!!!!!!!!!!!

그럼 다음번엔 집합 자료형부터 알려주는 파이썬 블로그를 가져오겠씁니닷.....................

'레쭈고 파이썬' 카테고리의 다른 글

파이썬 2장 - 6  (0) 2024.02.29
파이썬 2장 - 5  (1) 2024.02.28
파이썬 2장 - 3  (1) 2024.02.24
파이썬 2장 - 2  (1) 2024.02.22
파이썬 2장 - 1  (0) 2024.02.21