데이터 카드 자료구조에서 필터 기능을 구현하면 특정 조건에 맞는 데이터를 쉽게 조회할 수 있어 데이터 관리와 분석에 유용합니다. 필터는 예를 들어, 게임 플레이 데이터를 다룰 때 특정 점수 이상의 플레이어를 조회하거나 특정 날짜에 플레이한 기록만을 가져오는 경우에 사용할 수 있습니다.
필터 구현 설명
데이터 카드 자료구조에서 필터를 구현하려면 데이터 카드를 저장하는 클래스에 필터 메서드를 추가하여 조건에 맞는 데이터를 반환하도록 합니다. 파이썬의 filter
함수를 사용하거나, 리스트 컴프리헨션을 사용해 특정 조건에 맞는 카드만 추출할 수 있습니다.
예제 코드: 필터 메서드가 포함된 데이터 카드 클래스
다음은 GamePlayDataCardModel
클래스에 특정 조건에 맞는 카드를 필터링하는 메서드를 구현한 예제입니다.
# 데이터 카드 모델 클래스 정의
class GamePlayDataCardModel(list):
def add_card(self, player_id, player_name, level, score, date):
card = {
"player_id": player_id,
"player_name": player_name,
"level": level,
"score": score,
"date": date
}
self.append(card)
def filter_by_score(self, min_score):
# 점수가 min_score 이상인 카드만 반환
return [card for card in self if card["score"] >= min_score]
def filter_by_date(self, play_date):
# 특정 날짜에 플레이한 카드만 반환
return [card for card in self if card["date"] == play_date]
def filter_by_level_range(self, min_level, max_level):
# 레벨이 특정 범위(min_level 이상, max_level 이하)에 있는 카드만 반환
return [card for card in self if min_level <= card["level"] <= max_level]
# 데이터 카드 모델 인스턴스 생성
game_data = GamePlayDataCardModel()
# 데이터 카드 추가
game_data.add_card("player123", "GamerOne", level=5, score=1500, date="2024-10-21")
game_data.add_card("player456", "GamerTwo", level=3, score=1200, date="2024-10-21")
game_data.add_card("player123", "GamerOne", level=6, score=1800, date="2024-10-22")
game_data.add_card("player789", "GamerThree", level=4, score=900, date="2024-10-22")
# 필터링 예제: 점수가 1300 이상인 카드
high_score_cards = game_data.filter_by_score(1300)
print("Cards with score >= 1300:", high_score_cards)
# 필터링 예제: 2024-10-21에 플레이한 카드
date_filtered_cards = game_data.filter_by_date("2024-10-21")
print("Cards with play date 2024-10-21:", date_filtered_cards)
# 필터링 예제: 레벨이 3에서 5 사이인 카드
level_filtered_cards = game_data.filter_by_level_range(3, 5)
print("Cards with level between 3 and 5:", level_filtered_cards)
출력 예시
Cards with score >= 1300: [
{'player_id': 'player123', 'player_name': 'GamerOne', 'level': 5, 'score': 1500, 'date': '2024-10-21'},
{'player_id': 'player123', 'player_name': 'GamerOne', 'level': 6, 'score': 1800, 'date': '2024-10-22'}
]
Cards with play date 2024-10-21: [
{'player_id': 'player123', 'player_name': 'GamerOne', 'level': 5, 'score': 1500, 'date': '2024-10-21'},
{'player_id': 'player456', 'player_name': 'GamerTwo', 'level': 3, 'score': 1200, 'date': '2024-10-21'}
]
Cards with level between 3 and 5: [
{'player_id': 'player456', 'player_name': 'GamerTwo', 'level': 3, 'score': 1200, 'date': '2024-10-21'},
{'player_id': 'player789', 'player_name': 'GamerThree', 'level': 4, 'score': 900, 'date': '2024-10-22'}
]
코드 설명
filter_by_score
메서드:min_score
이상의 점수를 가진 카드를 필터링하여 반환합니다.filter_by_date
메서드: 특정 날짜에 플레이된 카드만 필터링하여 반환합니다.filter_by_level_range
메서드: 특정 레벨 범위 내(min_level
~max_level
)에 속하는 카드만 필터링하여 반환합니다.
이 구조의 장점
- 가독성: 조건에 맞는 필터링을 메서드로 정의하여 코드 가독성이 높습니다.
- 재사용성: 다양한 조건에 따라 데이터를 쉽게 필터링할 수 있습니다.
- 유연성: 카드 데이터가 추가되더라도 동일한 필터링 메서드를 사용할 수 있어 유연한 데이터 관리가 가능합니다.
이와 같은 필터 기능을 활용하면, 큰 데이터에서 필요한 정보만 추출하거나 특정 조건의 데이터만 분석하는 데 유리합니다.
'데이터 카드 자료구조' 카테고리의 다른 글
[데이터 카드 자료구조] 데이터 카드 자료구조의 필터 기능 3 (0) | 2024.10.29 |
---|---|
[데이터 카드 자료구조] 데이터 카드 자료구조의 필터 기능 2 (1) | 2024.10.29 |
[데이터 카드 자료구조] 리스트 상속 데이터 카드 자료구조 1 (1) | 2024.10.29 |
[데이터 카드 자료구조] 게임 플레이 데이터 저장 자료구조 1 (4) | 2024.10.26 |
[데이터 카드 자료구조] 헤더, 콘텐츠, 푸터, 메타로 구성된 데이터 카드 1 (12) | 2024.10.26 |