튜플 목록에서 첫 번째 요소(0번 인덱스)의 등장 빈도를 기준으로 데이터를 제한해야 하는 경우가 있습니다. 예를 들어 동일한 첫 번째 요소를 가진 튜플이 특정 개수를 초과하지 않도록 필터링할 때 유용합니다. 이러한 작업은 간단한 'if' 조건문과 반복문(for), 그리고 'append' 메서드를 조합하여 손쉽게 구현할 수 있습니다.
예제 코드
아래는 첫 번째 요소의 빈도를 기준으로 튜플을 제한하는 방법을 보여주는 예제입니다.
my_list = [(21, 24), (13, 42), (11, 23), (32, 43), (25, 56),(73, 84), (91, 40), (40, 83), (13, 27)]
print("The list is :")
print(my_list)
my_key = 1
my_result = []
mems = dict()
for sub in my_list:
if sub[0] not in mems.keys():
mems[sub[0]] = 1
else:
mems[sub[0]] += 1
if mems[sub[0]] <= my_key:
my_result.append(sub)
print("The filtered tuples are :")
print(my_result)실행 결과
The list is : [(21, 24), (13, 42), (11, 23), (32, 43), (25, 56), (73, 84), (91, 40), (40, 83), (13, 27)] The filtered tuples are : [(21, 24), (13, 42), (11, 23), (32, 43), (25, 56), (73, 84), (91, 40), (40, 83)]
코드 설명
먼저 튜플로 구성된 리스트를 정의하고 콘솔에 출력합니다.
허용할 최대 빈도를 나타내는 정수 값
1을 변수my_key에 할당합니다.필터링된 결과를 저장할 빈 리스트
my_result를 정의합니다.각 첫 번째 요소의 등장 횟수를 기록할 빈 딕셔너리
mems를 생성합니다.튜플 리스트를 순회하면서, 현재 튜플의 첫 번째 요소가 딕셔너리의 키에 존재하지 않으면 해당 키의 값을
1로 초기화합니다.이미 존재하는 키라면 기존 값에
1을 더해 등장 횟수를 증가시킵니다.등장 횟수가
my_key값보다 작거나 같은 경우에만 해당 튜플을 결과 리스트에 추가(append)합니다.최종적으로 필터링된 결과 리스트가 콘솔에 출력됩니다.
결과 분석
위 예제에서 원본 리스트에는 첫 번째 요소가 13인 튜플이 두 개, 즉 (13, 42)와 (13, 27)이 포함되어 있습니다. 최대 허용 빈도가 1이므로 먼저 등장한 (13, 42)만 남고 두 번째 튜플인 (13, 27)은 필터링 과정에서 제외됩니다. 이처럼 딕셔너리를 활용하면 각 요소의 등장 횟수를 효율적으로 추적하면서 중복 데이터를 손쉽게 제어할 수 있습니다.