데이터 취업 스쿨 스터디 노트 -(13) 튜플, 딕셔너리

테리·2024년 6월 18일
0

튜플(Tuple)

  • 리스트와 비슷하지만 아이템 변경이 불가하다.
  • '( )'를 이용해서 선언하고 데이터 구분은 ','를 이용한다.
  • 숫자, 문자(열), 논리형 등 모든 기본 데이터를 같이 저장할 수 있다.
  • 튜플에 또다른 컨테이너 자료형 데이터를 저장할 수도 있다.

튜플 아이템 조회

리스트와 동일하게 인덱스를 이용해서 아이템을 조회할 수 있다.

in과 not in

in과 not in 을 이용하면 아이템의 존재 유/무를 알 수 있다.
ex)
students = ['A', 'B', 'C', 'D']
if searchName in students:
if searchName not in students:

문자열에서도 사용 가능하다.
특정문자가 해당 문자열에 있는지 확인 가능

wrongWord = ['쩔었다','짭새','꼽사리','먹튀','지린','쪼개다','뒷담 까다']
sentence = '짭새 등장에 강도들은 모두 쩔었다. 그리고 강도들은 지린 듯 도망갔다.'

for word in wrongWord:
    if word in sentence:
        print('비속어: {}'.format(word))

#결과
#비속어: 쩔었다
#비속어: 짭새
#비속어: 지린

튜플 결합

리스트에서 사용할 수 있는 extend() 함수를 튜플에서는 사용할 수 없다.

튜플이 아닌 아이템을 튜플로 바꾸는 방법

myNumbers = (1,3,5,6,7)
friendNumbers = (2,3,5,8,10)

print('myNumbers: {}'.format(myNumbers))
print('friendNumbers: {}'.format(friendNumbers))

for num in friendNumbers:
    if num not in myNumbers:
        #num은 튜플이 아니어서 다른 튜플과 결합할 수 없다.
        #이럴 때 튜플로 바꿔주는 방법이 (num, )
        myNumbers= myNumbers + (num,)

print('myNumbers: {}'.format(myNumbers))

튜플 슬라이싱

  • 슬라이싱을 이용할 수 있다.
  • But 슬라이싱을 이용해서 아이템을 변경할 수 없다.
    ex)
    students[1:4] = ('A', 'B', 'C') -> 불가능

리스트와 튜플의 차이점

  • 튜플은 리스트와 달리 아이템 추가, 변경, 삭제가 불가하다.
    ex) append(), 리스트[1] = 'A', pop() 불가
  • 튜플은 선언 시 괄호 생략이 가능하다
    ex) students = 'A', 'B', 'C'

리스트와 튜플은 자료형 변환이 가능하다

students = ['피카츄', '리자몽', '거북왕', '피죤투']
#
students = tuple(students)
print('students type: {}'.format(type(students)))
#
students = list(students)
print('students type: {}'.format(type(students)))

튜플 아이템 정렬

  • list로 변환 후 sort() 함수를 이용한 후 다시 Tubple로 변경
  • sorted() 함수는 튜플도 정렬할 수 있다. 대신 리스트 자료형을 반환한다.
ex)
students = ('피카츄', '리자몽', '거북왕', '피죤투')
sortedStudents = sorted(students)

for문을 이용한 아이템 참조

  • 리스트 방식이랑 동일하다

while문을 이용한 조회

  • 리스트 방식과 동일하다

딕셔너리(Dictionary)

키(key)와 값(value)를 이용해서 자료를 관리한다.
딕셔너리에서 키는 절대 중복되면 안됨.

mutable - 변경 가능한 ex) 리스트
키에 튜플은 올 수 있지만 리스트는 올 수 없음

딕셔너리 조회

딕셔너리는 키를 이용해서 값을 조회한다.
없는 키값을 입력하면 오류가 발생한다.
ex) students['키값']

students = {'s1': '피카츄','s2': '개굴닌자','s3': '리자몽', 's4':['메타몽','에브이']}

print(students['s2'])
print(students['s4'])
print(students['s4'][0])
print(students['s4'][1])

#결과
#개굴닌자
#['메타몽', '에브이']
#메타몽
#에브이

get() 함수를 이용한 조회
get() 함수는 키값을 잘못 입력해도 오류가 발생하지 않고 None으로 결과가 출력됨.

ex)
print(students.get('s2'))

딕셔너리 추가

딕셔너리이름[키(key)] = 값(value)
추가하려는 키가 이미 있다면 기존 값이 변경된다.

딕셔너리 수정

딕셔너리이름[키(key)] = 값(value) 형태로 아이템을 수정한다.

keys()와 values()

keys()
딕셔너리의 키만 가져오는 함수.
형태는 리스트와 비슷하게 가져오지만 리스트는 아니다.

values()
딕셔너리의 값만 가져오는 함수.
형태는 리스트와 비슷하게 가져오지만 리스트는 아니다.

items()
키와 값을 가져오는 함수. 튜플 형태로 가져옴.

리스트 함수를 이용하면 리스트로써 사용할 수 있다.
ex) list(students.keys())

for문을 이용한 조회
.keys()로 출력되는 결과가 완전한 리스트는 아니지만 리스트처럼 사용할 수 있음.

모든 키와 밸류를 조회

for key in memInfo.keys()
	pritn(f'{key}: {memInfo[key]'}

딕셔너리 삭제

del과 key를 이용한 item 삭제
del

ex)
memInfo = {'이름': '홍길동',
           '메일': 'gildong@gmail.com',
           '학년': 3,
           '취미': ['축구', '게임']}

print(memInfo)

del memInfo['이름']
print(memInfo)

pop()
.pop()로 삭제하면 해당 밸류값이 리턴밸류에 담김

딕셔너리 유용한 기능

in not in
키 존재 유/무 판단

ex)
print('이름' in memInfo) -> memInfo에 '이름'이 있으면 True
print('이름' not in memInfo) -> memInfo에 '이름'이 없으면 True

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

clear()
모든 아이템을 삭제한다. 딕셔너리는 유지.
ex)
memInfo.clear()

0개의 댓글