내부적 구조, 즉 인스턴스 자체를 바꿀 수 없음.
(리턴을 통해 새롭게 인스턴스를 만드는 것과 구분하기)
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
'데이터 분석 > Python' 카테고리의 다른 글
[이론] 데이터 구조- numpy 배열 (0) | 2025.01.07 |
---|---|
[실습] 데이터 구조 (0) | 2025.01.07 |
[이론] 데이터 구조- 리스트, 인덱싱, 슬라이싱 (2) | 2025.01.06 |
[이론] if 조건문, for반복문, 반복 제어 (2) | 2025.01.06 |
[실습] 흐름 제어문의 활용 - 풀이와 오답노트 (2) | 2025.01.06 |