티스토리 뷰

728x90
반응형

해당 내용은 programmers의 "파이썬을 파이썬답게"라는 강의를 보고 개인적인 공부를 위해 기록한 것입니다.

 

리스트의 요소 count 구하기

my_str = input().strip()
answer = []
max = 0
s1 = set(my_str)
for x in s1:
    current = my_str.count(x)
    if max < current :
        max = current
        answer = []
        answer.append(x)
    elif max == current :
        answer.append(x)
answer.sort()
print(''.join(answer))

collections.Counter() 모듈 사용

import collections
answer = []
my_str = input().strip()
count = collections.Counter(my_str) # ex) Counter({'a': 3, 's': 3, 'd': 3, 'k': 2, 'l': 2, 'h': 1, 'j': 1})
max_value = max(list(count.values()))
for key in list(count.keys()):
    if count[key] == max_value :
        answer.append(key)
answer.sort()
print(''.join(answer))

추가적으로 lambda와 filter() 이용하기

import collections

my_str = input().strip()
dic = collections.Counter(list(my_str))
maximum = max(dic.values())
result = filter(lambda x:x[1] == maximum,dic.items()) # x[1] =tuple에서 value 값
answer = [key for key,value in result]
answer.sort()
print(''.join(answer))

 filter 함수는 built-in 함수로 list 나 dictionary 같은 iterable 한 데이터를 특정 조건에 일치하는 값만 추출해 낼때 사용하는 함수이다.
출처: https://bluese05.tistory.com/66 [ㅍㅍㅋㄷ]

filter(func, iterable)의 형태로 func는 주로 lambda 형태로 작성하면 좋음

 

most_common은 입력된 값의 요소들 중 빈도수(frequency)가 높은 순으로 상위 nnn개를 리스트(list) 안의 투플(tuple) 형태로 반환한다. nn을 입력하지 않은 경우, 요소 전체를 [('값', 개수)]의 형태로 반환한다.

import collections
c2 = collections.Counter('apple, orange, grape')
print(c2.most_common())
print(c2.most_common(3))
'''
결과
[('a', 3), ('p', 3), ('e', 3), ('g', 2), (',', 2), ('r', 2), (' ', 2), ('n', 1), ('l', 1), ('o', 1)]
[('a', 3), ('p', 3), ('e', 3)]


출처: https://excelsior-cjh.tistory.com/94 [EXCELSIOR]

max 대신 이용할 수도 있음

 

 

728x90
반응형

'python' 카테고리의 다른 글

python Cookbook 이터레이터와 제너레이터 1  (0) 2019.06.26
python 태그와 임의 값 나누기, deque  (0) 2019.06.26
python product, list 붙이기  (0) 2019.06.24
python lambda, reduce  (0) 2019.06.24
python *(Asterisk) 이용 , iterable  (0) 2019.06.24
댓글