[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})