Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python - 첫 번째 요소의 빈도를 기준으로 튜플 목록 필터링하기

튜플 목록에서 첫 번째 요소(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)은 필터링 과정에서 제외됩니다. 이처럼 딕셔너리를 활용하면 각 요소의 등장 횟수를 효율적으로 추적하면서 중복 데이터를 손쉽게 제어할 수 있습니다.