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

Python – 리스트 내 요소 빈도 제한하기

리스트 내 특정 요소의 등장 횟수(빈도)를 제한해야 하는 상황이 종종 발생합니다. 이럴 때는 간단한 반복문과 append 메서드를 함께 활용하면 손쉽게 해결할 수 있습니다. 아래에서 그 구체적인 방법을 살펴보겠습니다.

예제 코드

다음은 리스트 내 각 요소의 빈도를 미리 정의된 최대값으로 제한하는 방법을 보여주는 예제입니다.

from collections import defaultdict

my_list = [11, 14, 15, 14, 11, 14, 14, 15, 15, 16]

print("The list is :")
print(my_list)

my_dict = {14 : 3, 11 : 1, 16 : 1, 15 : 2}

print("The dictionary is :")
print(my_dict)

my_result = []
my_def_dict = defaultdict(int)
for element in my_list:
my_def_dict[element] += 1

if my_def_dict[element] > my_dict[element]:
continue
else:
my_result.append(element)

print("The result is :")
print(my_result)

실행 결과

The list is :
[11, 14, 15, 14, 11, 14, 14, 15, 15, 16]
The restrict dictionary is :
{14: 3, 11: 1, 16: 1, 15: 2}
The result is :
[11, 14, 15, 14, 14, 15, 16]

코드 설명

  • collections 모듈의 defaultdict 클래스를 환경에 임포트합니다.

  • 정수로 구성된 리스트를 정의한 뒤 콘솔에 출력합니다.

  • 각 요소별 허용 가능한 최대 등장 횟수를 담은 딕셔너리를 정의하고 출력합니다.

  • 결과를 저장할 빈 리스트를 생성합니다.

  • 요소 개수를 자동으로 카운트하기 위해 정수형 defaultdict를 선언합니다.

  • 원본 리스트를 순회하면서 각 요소가 나타날 때마다 딕셔너리의 카운트 값을 1씩 증가시킵니다.

  • 현재까지의 등장 횟수가 허용된 최대 빈도를 초과하면 continue 문을 사용해 해당 요소를 건너뜁니다.

  • 그렇지 않은 경우에는 append 메서드를 통해 해당 요소를 결과 리스트에 추가합니다.

  • 최종적으로 필터링된 결과가 콘솔에 출력됩니다.

위 예제에서 확인할 수 있듯이, 원본 리스트 [11, 14, 15, 14, 11, 14, 14, 15, 15, 16]에서 14는 최대 3번, 11과 16은 각각 1번, 15는 2번까지만 유지되며, 그 결과 [11, 14, 15, 14, 14, 15, 16]이 반환됩니다. 이처럼 defaultdict를 활용하면 요소별 출현 횟수를 추적하면서 조건에 맞는 새로운 리스트를 효율적으로 만들 수 있습니다.