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

Python – 특정 키의 각 값별 발생 횟수 찾기

개요

파이썬에서 특정 키가 가진 각 값이 몇 번 나타나는지(발생 횟수) 확인해야 할 때가 있습니다. 이럴 때는 리스트 컴프리헨션(list comprehension)람다(lambda) 함수, 그리고 itertools의 groupby를 함께 사용하면 간결하게 해결할 수 있습니다.

아래 예제를 통해 실제 구현 방법을 살펴보겠습니다.

예제 코드

from itertools import groupby
my_dict = [{'pyt' : 13, 'fun' : 44}, {'pyt' : 63, 'best' : 15},{'pyt' : 24, 'fun' : 34}, {'pyt' : 47, 'best' : 64} ]

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

my_key = 'pyt'
print("The key value is :")
print(my_key)

my_result = [{keys: len(list(value))} for keys, value in groupby(my_dict, lambda index: index[my_key])]

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

실행 결과

The dictionary is :
[{'pyt': 13, 'fun': 44}, {'pyt': 63, 'best': 15}, {'pyt': 24, 'fun': 34}, {'pyt': 47, 'best': 64}]
The key value is :
pyt
The result is :
[{13: 1}, {63: 1}, {24: 1}, {47: 1}]

코드 설명

  • 패키지 임포트: 그룹화를 위해 필요한 groupbyitertools 모듈에서 가져옵니다.

  • 데이터 정의: 딕셔너리 여러 개로 이루어진 리스트를 정의한 뒤 콘솔에 출력합니다.

  • 키 지정: 발생 횟수를 세고자 하는 키('pyt')를 변수에 저장하고 콘솔에 출력합니다.

  • 그룹화 및 카운트: 리스트 컴프리헨션으로 리스트를 순회하면서, 람다 함수가 각 딕셔너리에서 해당 키의 값을 추출합니다. 이 값을 기준으로 groupby가 요소들을 묶고, len(list(value))를 통해 각 그룹의 개수를 계산합니다.

  • 결과 저장: 계산된 결과는 my_result 변수에 할당됩니다.

  • 출력: 최종 결과가 콘솔에 표시됩니다. 각 키 값(13, 63, 24, 47)이 한 번씩만 등장했으므로 모두 1로 집계된 것을 확인할 수 있습니다.

참고 사항

groupby인접한(연속된) 동일한 값만 묶는다는 점에 유의해야 합니다. 만약 같은 값이 리스트 내에서 서로 떨어져 있다면 하나의 그룹으로 합쳐지지 않습니다. 이 경우 사전에 데이터를 키 값 기준으로 정렬(sorted)한 뒤 groupby를 적용하면 정확한 집계가 가능합니다.