✅ 함수 기본 설명
형식: Counter({val})
반환 값: Counter 객체
Counter() 함수는 매개변수로는 list, string 등을 받을 수 있다. 중복된 원소를 지닌 {val}, 즉 list 등을 매개변수로 받으면, 각 원소가 몇 번씩 등장하는지가 저장된 객체를 반환한다.
🍏 예시 코드
from collections import Counter
a = ["a", "a", "c", "h", "h"]
counter_a = Counter(a)
print(counter_a) # Counter({'a': 2, 'h': 2, 'c': 1})
b = "hi hello"
counter_b = Counter(b)
print(counter_b) # Counter({'h': 2, 'l': 2, 'i': 1, ' ': 1, 'e': 1, 'o': 1})
✅ 설명
Counter 클래스는 Python의 dictionary(딕셔너리)를 확장하고 있다. 따라서 딕셔너리에서 제공하는 메소드들을 그대로 사용할 수 있다.
🍏 예시 코드
a = ["a", "a", "c", "h", "h"]
counter = Counter(a)
# 대괄호를 통해 key로 value 얻기
print(counter["a"]) # 2
# 특정 key에 대한 value 갱신
counter["a"] += 1 # counter = Counter({'a': 3, 'h': 2, 'c': 1})
# 새로운 key-value 추가
counter["b"] = 2 # counter = Counter({'a': 3, 'h': 2, 'b': 2, 'c': 1})
# in 을 통해 특정 key가 존재하는지 확인
print("h" in counter) # True
✅ 설명
Counter 클래스는 산술 연산자를 사용할 수 있다.
🍏 예시 코드
a = ["a", "a", "c", "h", "h"]
b = ["a", "c", "c", "h", "h"]
c = ["a", "b", "c", "h", "h"]
counter_a = Counter(a) # Counter({'a': 2, 'h': 2, 'c': 1})
counter_b = Counter(b) # Counter({'c': 2, 'h': 2, 'a': 1})
counter_c = Counter(c) # Counter({'h': 2, 'a': 1, 'b': 1, 'c': 1})
# 더하기
print(counter_a + counter_b) # Counter({'h': 4, 'a': 3, 'c': 3})
# 빼기1
print(counter_a + counter_b) # Counter({'a': 1})
# 빼기2
print(counter_a - counter_c) # Counter({'a': 1})
⚠️ 위의 # 빼기1과 # 빼기2를 보면 알 수 있듯이, 뺄셈의 결과로 value 값이 0이나 음수가 나올 시에는 최종 Counter object에서 해당 key에 대한 요소가 제외된다.
✅ 설명
Counter 클래스의 메소드에 대해 알아보자. 이 부분은 앞으로 공부하면서 접하게 되는 메소드에 대해 매번 업데이트할 예정이다.
🍏 예시 코드
key-value 쌍부터 튜플 형태의 배열로 반환한다. 매개변수로 {num}을 넣으면 빈도수가 높은 순서대로 num 개수만큼의 데이터를 얻을 수 있다.a = Counter('aaabcc').most_common()
# a = [('a', 3), ('c', 2), ('b', 1)]
b = Counter('aaabcc'.most_common(1)
# b = [('a', 3)]
Counter object의 key-value 쌍을 튜플 형태로 반환한다.a = ["a", "a", "c", "h", "h"]
# a = dict_items([('a', 2), ('c', 1), ('h', 2)])
# 프로그래머스 Lv.0 '한 번만 등장한 문자'
from collections import Counter
def solution(s):
return ''.join(sorted(k for k, v in Counter(s).items() if v == 1))