데이터 분석/Python

[이론] 데이터 구조- 튜플, 문자열, 해쉬셋, 딕셔너리

toraa 2025. 1. 7. 11:30

내부적 구조, 즉 인스턴스 자체를 바꿀 수 없음.

(리턴을 통해 새롭게 인스턴스를 만드는 것과 구분하기)

 

1. 튜플

여러 데이터 묶음의 불변 시퀀스 구조.

순서를 가지고 있음 (순서 인덱싱 가능)

가볍고 빠르게 접근 가능

데이터 수정, 추가 불가능

a = (1,2,3)

b = '유미', '뽀삐', '나르'

소괄호를 생략 가능. 여러 데이터를 콤마로 한줄로 씀.

 

인덱싱, 슬라이싱

print(b[1:])

=> '뽀삐','나르'

 

 

2. 문자열

키워드 분석시 유용

문자가 묶여있는 구조(유니코드들을 붙여서)

기본적으로 순서를 가지고 있지만, 불변 특성을 가짐

다양한 함수를 가지고 있음

 

★문자열 메소드

replace(x,y) : x를 y로 교체. 바뀐 새로운 문자열을 생성 (변수 할당 필요. 새로운 변수나 기존 변수 사용가능)

strip() : 앞뒤 공백제거 (\n등)

split(x) : x 기준으로 분리해서 리스트생성. (결과가 리스트로 생성됨)

encode()

find(substr)

 

* \n : 줄바꿈

 

 

3. 해쉬셋

순서가 아닌 해쉬를 기반으로 데이터 구조적 저장

hash function을 거쳐 해시 테이블 특정 영역에 저장됨

데이터를 바로 바로 저장할 수 있어 저장 속도가 빠름

중복으로 데이터를 저장할 수 없음

저장 순서는 의미 없음

 

s ={'돌거북','바위게'}

s.add('바론')

s.add('바위게')

s

=> {'돌거북','바론','바위게'}

순서와 중복 없음

 

 

4. 딕셔너리

객체와 매핑하여 키(key)와 값(value) 매핑구조

즉, key를 거쳐서 데이터를 찾아가는 구조

 

key:value 묶어서 넣어주기 (매핑)

item1 = {'아이템명': '모렐로노미콘', '가격' : 2950, '카테고리' : '치유감소'}

item1

=> {'아이템명': '모렐로노미콘', '가격' : 2950, '카테고리' : '치유감소'}

 

 

key로 인덱싱

item1['아이템명']

=> '모렐로노미콘'

 

 

키:값 추가

item1['재고']=5

=> {'아이템명': '모렐로노미콘', '가격' : 2950, '카테고리' : '치유감소', '재고' : 5}

 

 

키:값 변경

item1['재고'] = 1
item1

=> {'아이템명': '모렐로노미콘', '가격' : 2950, '카테고리' : '치유감소', '재고' : 1}

 

 

키:값 제거

del item1['카테고리']
item1

=> {'아이템명': '모렐로노미콘', '가격' : 2950, '재고' : 1}

 

 

키 목록

item1.keys()

=>['아이템명', '가격', '재고']

 

 

값 목록

item1.values()

dict_values(['모렐로노미콘', 2950, 1])

 

 

반복문은 key가 이터러블

for i in item1:
    print(i)

=>

아이템명

가격

카테고리

재고

 

 

딕셔너리의 계층구조 (JSON과 유사)

d = {
    'id': faker,
    'name': '이상혁',
    'company': {
        'name': 't1',
        'site': 'aaa.www.ggg',
        'phone': '02-2222-2222',
        'city': '서울'},
    'win': [
        {'name': 'worlds', 'year': '2024'},
        {'name': 'worlds', 'year': '2023'}
    ],
    'phone': '010-1111-2222'
}

# 계층 구조에서 중첩 키 인덱싱
print(d['company']['city'])
print(len(d['win']))
print(d['win'][0]['name'])

=>

서울

2

worlds