데이터를 저장하고 처리하는 데 필수적인 데이터 구조에 대해 알아보고, CRUD(Create, Read, Update, Delete) 예시와 각 구조의 사용 사례를 살펴보겠습니다.
Python의 데이터 구조 🐍
Python은 직관적이고 사용하기 쉬운 다양한 데이터 구조를 제공합니다. 각각의 구조는 특정한 상황에서 더욱 유용하게 사용됩니다.
1. List (리스트) [ ]
- 특징: 순서가 있는 데이터의 집합으로, 변경 가능합니다.
- 사용 사례: 데이터의 순서가 중요하거나, 항목을 반복적으로 추가/삭제해야 하는 경우에 적합합니다.
- 데이터 엑세스와의 차이
sentence ='hello world'
sentence[1]
sentence[1] = 'e'
'hello world'의 2번째 글자를 가져옵니다.
- 여러 데이터타입(리스트까지도!)의 데이터를 하나의 리스트로 저장 가능합니다.
[1,2,'삼','사',5.5, [2,3,4]]
CRUD 예시
# Create
names = ["alice", "bob", "charlie"]
[]
# Read
print(names[0]) # alice 출력
# Update
names[0] = "Alice"
# Delete
del names[0] # 첫 번째 요소 삭제
week.pop(0) # 삭제한 데이터를 확인할 수 있음
# 리스트에 항목 추가하기 (리스트 맨 끝에 추가됨)
week.append('Sat')
# 위치를 지정해서 추가하기
week.insert(-1,'Fri')
2. Dictionary (딕셔너리) { key : value }
- 특징: Key-Value 쌍으로 데이터를 저장하며, 순서가 유지됩니다 (Python 3.7 이상).
- key, value 의 쌍 pair 은 item 이라고 합니다.
- 사용 사례: 데이터에 이름(키)을 붙여 저장하고 검색해야 할 때 유용합니다.
CRUD 예시
# Create
info = {"brand": "Apple", "model": "iPhone"}
info["brand"] = "Samsung"
{}
# Read
print(info["brand"]) # Apple 출력, 키 값이 없으면 에러
my_phone.get('model') # 함수 방식으로 엑세스하기도 가능, 키값이 없으면 none으로 리턴
# Update
info["brand"] = "Samsung" # 덮어씌우기
# Delete
del info["brand"]
# 딕셔너리에 브랜드 정보가 있니?
'brand' in my_phone #True 키 값만 확인가능, value는 불가
# 밸류값만 가져와라
my_phone.values()
#dict_values(['Apple', 'iphon 13', 'orange']) 리스트([ ]) 비스무리한애로 리턴됨
list(my_phone.values()) # 리스트로 형 변환!
'Apple' in my_phone.values()
3. Tuple (튜플) ( )
- 특징: 순서가 있지만, 변경할 수 없는 데이터 구조입니다.
- 사용 사례: 변경될 필요가 없는 고정된 데이터를 저장할 때 적합합니다.
꼭 변경해야한다면 튜플 그 자체에서는 변경이 불가하니 별도의 리스트로 저장해야합니다.
my_list=list(my_tuple)
CRUD 예시
# Create
data = ("apple", "banana")
()
#하나짜리 튜플을 만들려면 , 을 써줘야함
(3, )
# Read
print(data[0]) # apple 출력
# Update/Delete 불가능
4. Set (집합) { }
- 특징: 순서가 없고, 중복을 허용하지 않는 데이터 구조입니다.
- 딕셔너리와 같이 중괄호 { }를 사용하지만, key:value의 한 쌍이 아닙니다.
- 사용 사례: 데이터의 중복을 제거하거나 교집합, 차집합 등의 집합 연산을 수행할 때 유용합니다.
- 예시 # 이벤트 페이지 클릭 - page_view = list 클릭할때마다 조회수 체크
unique값을 찾으려면? unique_page_view=set(page_view)
CRUD 예시
# Create
fruits = {"apple", "banana"}
# 빈 집합(set)은 함수로 만들어야한다.
my_set=set()
# Read
print("apple" in fruits) # True 출력
# Update
fruits.add("cherry")
# Delete
fruits.remove("apple")
#합집합 - 이벤트 a와 b 참여한 사람 다 뽑아봐 | or
event_a | event_b
#교집합 - 이벤트 a와 b 둘다 참여한 사람 다 뽑아봐 &
event_a & event_b
#차집합 - 이벤트 a 응모한 사람은 제외해
event_b - event_a
데이터 구조 사용 가이드 💡
- List: 데이터가 순차적으로 저장되고, 순서를 유지해야 하는 경우. 예: 학생 명단, 대기열
- Dictionary: 데이터 항목에 키를 부여하여 빠르게 접근해야 하는 경우. 예: 사용자 정보, 설정 값
- Tuple: 변경되지 않아야 하는 데이터를 저장할 때. 예: 좌표, 색상 값
- Set: 중복 데이터를 제거하거나 집합 연산을 수행할 때. 예: 고유 사용자 ID, 태그 목록
Python의 다양한 데이터 구조를 상황에 맞게 선택하여 효율적으로 데이터를 처리하세요! 🚀