[python] Counter


Counter


collections.Counter([iterable-or-mapping])

쉽게 말해 숫자세는 메소드입니다.


from collections import Counter

c1 = Counter()
print('c1 = ', c1)
# 출력값
# c1 =  Counter()

# 뭐든지 세버립니다.. ㅎㄷㄷ
c2 = Counter('gallahad')
print('c2 = ', c2)
# 출력값
# c2 =  Counter({'a': 3, 'l': 2, 'd': 1, 'h': 1, 'g': 1})

c3 = Counter({'red': 4, 'blue': 2})
print('c3 = ', c3)
# 출력값
# c3 =  Counter({'red': 4, 'blue': 2})

c4 = Counter(cats=4, dogs=8)
print('c4 = ', c4)
# 출력값
# c4 =  Counter({'dogs': 8, 'cats': 4})

# 없는 값은 0으로 나옵니다.
print('c4["teemo"] = ', c4['teemo'])
# 출력값
# c4["teemo"] =  0

# 값 지우기
del c4['cats']
print('c4 after del cats = ', c4)
# 출력값
# c4 after del cats =  Counter({'dogs': 8})

c5 = Counter(a=5, b=4, c=3, d=2)
print('c5 = ', c5)
print('c5.elements() = ', c5.elements())
print('sorted(c5.elements()) = ', sorted(c5.elements()))
# 출력값
# c5 =  Counter({'a': 5, 'b': 4, 'c': 3, 'd': 2})
# c5.elements() =  <itertools.chain object at 0x1006a80b8>
# sorted(c5.elements()) =  ['a', 'a', 'a', 'a', 'a', 'b', 'b', 'b', 'b', 'c', 'c', 'c', 'd', 'd']

# .most_common(n) 메소드
c6 = Counter('abracadabra')
print('c6 = ', c6)
print('c6.most_common(3) = ', Counter('abracadabra').most_common(3))
# 출력값
# c6 =  Counter({'a': 5, 'r': 2, 'b': 2, 'c': 1, 'd': 1})
# c6.most_common(3) =  [('a', 5), ('r', 2), ('b', 2)]

# .subtract([iterable-or-mapping]) 메소드
c7 = Counter(a=4, b=2, c=0, d=-2)
c8 = Counter(a=1, b=2, c=3, e=4)
c7.subtract(c8)
print('c7 = ', c7)
# 출력값
# c7 =  Counter({'a': 3, 'b': 0, 'd': -2, 'c': -3, 'e': -4})

c9 = Counter(a=4, b=2, c=0, d=-2, f=0)
c10 = Counter(a=1, b=2, c=3, e=4)

# +: 값을 mapping해서 더하되, positive값만 살아남습니다.
c11 = c9 + c10
print('c11 = ', c11)
# 출력값
# c11 =  Counter({'a': 5, 'b': 4, 'e': 4, 'c': 3})

# -: 값을 mapping해서 빼되, positive값만 살아남습니다.
c12 = c9 - c10
print('c12 = ', c12)
# 출력값
# c12 =  Counter({'a': 3})

# &: 값을 mapping해서 max값만 살리되, positive값만 살아남습니다.
c13 = c9 & c10
print('c13 = ', c13)
# 출력값
# c13 =  Counter({'b': 2, 'a': 1})

# |: 값을 mapping해서 max값만 살리되, positive값만 살아남습니다.
c14 = c9 | c10
print('c14 = ', c14)
# 출력값
# c14 =  Counter({'a': 4, 'e': 4, 'c': 3, 'b': 2})

# +, -: 부호에 맞게 값들을 바꾸되, positive값만 살립니다.
c15 = +c9
print('c15 = ', c15)

c16 = -c9
print('c16 = ', c16)
# 출력값
# c15 =  Counter({'a': 4, 'b': 2})
# c16 =  Counter({'d': 2})