파이썬 자료구조_002 튜플과 딕셔너리

이새롬·2023년 2월 15일
0

python

목록 보기
15/21
post-thumbnail

튜플

리스트와 비슷하지만 아이템 변경 불가!!!!

선언은 () 구분은 ,

리스트와 같이 숫자, 문자, 논리형 등 모든 기본 데이터를 같이 저장할 수 있다.
튜플에 또 다른 컨테이너 자료형 데이터를 저장할 수 있다.

다만, 아이템 변경불가..!

아이템 조회

튜플도 리스트와 같이 인덱스 조회가 가능.
0부터 인덱스가 붙음

in, not in

in 존재하면 True , 없으면 not in
not in 존재하면 False, 없으면 in

아이템 외에 문자열에서 글자찾기도 가능함!
(대소문자까지 구분함)

random 모듈에 sample함수는 리스트로 결과값을 냄.
sample(range(),몇가지)

튜플 길이 len()

for문(or while문)과 만나 range에 들어가 아이템 조회가 가능함

튜플 결합

extend() 는 튜플은 형태변환이 불가해서 사용 못함. XXXX
튜플은 변경이 불가한데, 확장은 원래 갖고있는 튜플에 추가되기에 불가.

+덧셈결합만 가능.
A + B = C

C 는 원본과 다른 변수기에 가능!

vegetables = ('토마토','가지','애호박','당근','감자','양파')
fruits = ('딸기','블루베리','키위','망고','포도','바나나')
print(vegetables)
print(fruits)

basket = vegetables + fruits

print(basket)

💻출력

(number, ) -> 튜플로 저장하기..!

슬라이싱

[n:m]
n부터 m-1까지 뽑아낼 수 있음!

💻출력

맨 위 print 값 무시하고 2번째 print부터의 출력값은
인덱스 2부터 3까지 출력
인덱스 처음(0)부터 3까지 출력
인덱스 4부터 끝까지 출력
인덱스 2부터 뒤에서 3자리까지 출력
인덱스 뒤에서 5자리서부터 뒤에서 3자리까지 출력

  • 단계도 설정 가능
    [시작점:끝점:단계]

슬라이싱으로 아이템 변경 불가
리스트에 있는 아이템을 튜플형태의 변경은 가능..!

튜플명(slice(시작,끝))
시작부터 끝 미만까지


튜플은 선언시 괄호 생략 가능!!!
vegetables = ('토마토','가지','애호박','당근','감자','양파') 와
vegetables = '토마토','가지','애호박','당근','감자','양파'
같은 튜플임

+++ 자료형 변환

정렬이 필요하거나 할때 리스트로 타입변환하여 적용 후 다시 튜플로 변환.

리스트 -> 튜플
vegetables = tuple(vegetables)

튜플 -> 리스트
vegetables = list(vegetables)

정렬 시 리스트로 변환 후 sort(), sort(reverse=True)

+)
sorted() 함수로 튜플도 오름차순 정렬이 가능함!
내장함수라 바로 sorted(튜플명)
그러나 결과값은 리스트 자료형으로 반환해서 출력됌.


튜플과 for문 - 이 이후로는 list의 for문과 내용이 동일.

for i in range(len(fruits)):
    print(fruits[i])


for fruit in fruits:
    print(fruit)

내부 컨테이너가 있을 시에

students = (1,19), (2,20), (3,22), (4,18), (5,21),

방법 1> 
for i in range(len(students)):
    print('{}학급 학생수: {}명'.format(students[i][0],students[i][1]))

방법2>
for classNo, cnt in students:
    print('{}학급 학생수: {}명'.format(classNo,cnt))

튜플과 while문으로 아이템 조회


첫번째) len활용

n = 0
while n < len(튜플명):
    print(cars[n])
    n += 1


두번째 ) flag변수

n = 0
flag = True

while flag:
    print(cars[n])
    n += 1

    if n == len(cars):
        flag = False


세번째 ) break

n = 0
while True:
    print(cars[n])
    n += 1

    if n == len(cars):
        break

딕셔너리 {키:값}

키(key)값(value)를 이용해서 자료를 관리한다.
키는 인덱스의 개념과 같은데, 키는 작성자가 정함

딕셔너리는 키와 구분하는 유일한 값이기때문에, 키는 중복안됌. (값은 가능)

선언은 {} 구분은 키:값 형태로 들어간다.

키값으로 아이템 호출함

key와 value에는 숫자, 문자(열), 논치형 뿐만 아니라 컨테이너 자료형도 올 수 있다.

단 key에는 변경 불가의 데이터만 올 수 있다. 변경 가능할만한 것은 안된다 ( 튜플 가능, 리스트는 불가)

키값을 이용해 조회하자!

딕셔너리명['키 값']

없는 키 값을 찾으면 에러가 발생함

get()

딕셔너리명.get('키값')
없는 키 값을 찾으면 none을 내보냄

딕셔너리추가

딕셔너리명['key값'] = 'value값'

추가하려는 키 값이 이미 있다면 기존 값이 수정된다.

keys() 와 Value

keys() 전체 key를 리스트 형식으로 출력
리스트 형식으로 나오고 type은 dict_keys 라고 나옴

values() 전체 value값을 리스트 형식으로 출력
리스트 형식으로 나오고 type은 dict_value 라고 나옴

items() 키와 value를 튜플 형식으로 출력
튜플 형식으로 나오고 type은 dict_items라고 나옴

for key in myInfo.keys():
print(f'{key}: {myInfo[key]}')

del 딕셔너리명['키값']

해당 아이템 삭제됌

딕셔너리명.pop('키값')

해당 아이템 삭제됌

★ pop은 함수라 버린 값을 출력하면 볼수 있음!

in, not in

키 값 기준으로 있는지 없는지 판단

len()

딕셔너리 길이(아이템개수)를 알아 낼수 있따.

clear()

모든 아이템을 삭제한다.
딕셔너리명.clear()

0개의 댓글