Python Counter, sorted로 정렬하기

2022. 11. 17. 07:31Programming

728x90

python을 사용할 때 자주 사용할 수록 괜찮은 함수 중 하나가 카운터라고 생각한다.

 

1. Counter

1-1. 기본 사용 방법

from collections import Counter
x = Counter({'a':5, 'b':3, 'c':7})

 

1-2. 빈도가 많은 element 부터 출력되도록 정렬

 Counter.most_common() method 를 사용한다.

from collections import Counter
x = Counter({'a':5, 'b':3, 'c':7})
x.most_common()
# [('c', 7), ('a', 5), ('b', 3)]

 

1-3. 가장 빈도가 많은 element 확인하는 방법

1번의 함수를 아래와 같이 1 이라는 입력인자를 줘서 최빈값을 출력하게 할 수도 있다.

x.most_common(1)
# [('c', 7)]

 

728x90

2. Sorted 사용하기

카운터와 유사한 함수로는 sort(), sorted() 등이 있는데, 정렬 조건을 세밀하게 조정할 수 있는 함수는 sorted()를 추천한다.

2번의 함수 x.most_common()는 아래와 같이 출력될 수 있다. (단, 여기에서는 values는 표시 안되고 keys만 출력된다.)

sorted(x, key=x.get, reverse=True)
# ['c', 'a', 'b']
# x의 기본값인 keys에 해당하는 값을 가져와서 x.get 그 값을 기준으로 정렬

아니면 아래와 같이 x.items()를 가져와서, 각 item (key, value)의 value에 해당하는 값을 기준으로 정렬할 수도 있다.

>>> sorted(x.items(), key=lambda pair: pair[1], reverse=True)
[('c', 7), ('a', 5), ('b', 3)]

 

더 자세한 내용은 Python sorting howto 를 참고하면 된다.

반응형