집합 자료형은 중복되지 않는 고유한 요소들의 모음을 저장하는 자료형으로, 여러 가지 실무 상황에서 유용하게 사용할 수 있다. 집합은 중괄호 {}를 사용하여 생성하며, 다양한 집합 연산을 지원한다. 아래에서는 집합 자료형을 실무에서 사용할 수 있는 몇 가지 상황을 설명해보겠다.
1. 중복 제거
가장 일반적인 집합의 사용 사례는 중복된 데이터를 제거하는 것이다. 예를 들어, 고객 이메일 목록에서 중복된 이메일 주소를 제거할 때 유용하다.
예시
emails = ["alice@example.com", "bob@example.com", "alice@example.com", "charlie@example.com"]
unique_emails = set(emails)
print(unique_emails) # 출력: {'alice@example.com', 'bob@example.com', 'charlie@example.com'}
2. 교집합, 합집합, 차집합 연산
집합은 교집합, 합집합, 차집합 등의 집합 연산을 효율적으로 수행할 수 있다. 이는 데이터 분석, 필터링 등에 매우 유용하다.
예시
# 두 집합 생성
set_a = {"apple", "banana", "cherry"}
set_b = {"banana", "cherry", "date", "fig"}
# 교집합
intersection = set_a & set_b
print(intersection) # 출력: {'banana', 'cherry'}
# 합집합
union = set_a | set_b
print(union) # 출력: {'apple', 'banana', 'cherry', 'date', 'fig'}
# 차집합
difference = set_a - set_b
print(difference) # 출력: {'apple'}
3. 데이터 무결성 유지
집합은 중복을 허용하지 않기 때문에, 데이터 무결성을 유지하는 데 유용하다. 예를 들어, 사용자 ID나 제품 코드와 같이 고유해야 하는 데이터를 저장할 때 사용한다.
예시
user_ids = {"user1", "user2", "user3"}
# 새로운 사용자 ID 추가
user_ids.add("user4")
print(user_ids) # 출력: {'user1', 'user2', 'user3', 'user4'}
# 중복된 사용자 ID 추가 시도
user_ids.add("user2")
print(user_ids) # 출력: {'user1', 'user2', 'user3', 'user4'} (중복 추가되지 않음)
4. 빠른 멤버십 테스트
집합은 특정 요소가 집합에 존재하는지 빠르게 확인할 수 있다. 이는 대규모 데이터에서 특정 요소를 검색할 때 유용하다.
예시
# 대규모 데이터 집합 생성
large_set = set(range(1000000))
# 특정 요소 존재 여부 확인
print(999999 in large_set) # 출력: True
print(1000000 in large_set) # 출력: False
5. 태그 시스템
집합은 태그 시스템을 구현할 때 유용하다. 예를 들어, 블로그 게시물에 여러 태그를 추가하고, 특정 태그를 가진 게시물을 검색할 때 사용한다.
예시
# 게시물에 태그 추가
post_tags = {"python", "programming", "tutorial"}
# 새로운 태그 추가
post_tags.add("coding")
print(post_tags) # 출력: {'python', 'programming', 'tutorial', 'coding'}
# 특정 태그 존재 여부 확인
print("python" in post_tags) # 출력: True
print("java" in post_tags) # 출력: False
결론
집합 자료형은 중복 제거, 집합 연산, 데이터 무결성 유지, 빠른 멤버십 테스트, 태그 시스템 등 다양한 실무 상황에서 유용하게 사용할 수 있다. 집합의 특성과 장점을 이해하고 적절히 활용하면 데이터 처리와 분석을 더욱 효율적으로 수행할 수 있다.
'job > python' 카테고리의 다른 글
리스트와 튜플의 메모리 사용량 차이 (0) | 2024.08.07 |
---|---|
리스트와 튜플의 사용 시점을 결정하는 기준 (0) | 2024.08.07 |
리스트와 튜플의 차이 (0) | 2024.08.07 |
인덱싱, 슬라이싱을 활용한 2차원 배열 처리 (0) | 2024.08.07 |
문자열: 인덱싱, 슬라이싱 (0) | 2024.08.07 |